One of the most popular types of API is REST that is designed to take advantage of existing HTTP protocols. Mainly, RESTful API is an application program interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. Also, it doesn’t require to install any addon or libraries if you want to make use of REST API. The only main advantage of REST APIs is that it provides better flexibility & can handle multiple types of calls, return different data formats and can structurally implement correct hypermedia. Which means it lets developers build an API that meets all business needs by reaching new customers.
Same way, Magento 2 API framework let developers, develop new services for syncing Magento 2 store data using CRUD operations.
Also, using Rest API is as easy as pie, if you are familiar with the flow to call APIs in PHP. And if you are developing such services, you probably come across a requirement of fetching order data using REST API. So, we are again back with another blog, that allows you to fetch all order status using REST API in Magento 2.
First, we need to create “Registration.php” file inside our extension at this path.
app\code\VENDOR\EXTENSION
1 2 |
<!--?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'VENDOR_EXTENSION', __DIR__ ); </pre> <p>After that, we need to create “<strong>Module.xml</strong>” file inside extension etc folder<br ?--> <strong>app\code\VENDOR\EXTENSION\etc</strong> |
1 |
<!--?xml version="1.0"?--> |
Now, we have to create one more file “Webapi.xml” inside the same etc folder.
app\code\VENDOR\EXTENSION\etc
1 |
<!--?xml version="1.0"?--> |
After that, we need to create “Di.xml” file in same etc folder.
app\code\VENDOR\EXTENSION\etc
1 |
<!--?xml version="1.0"?--> |
After that, we need to create “Getorderstatus.php” file inside our extension API folder to serve a response.
app\code\VENDOR\EXTENSION\Api\
1 2 |
<!--?php namespace VENDOR\EXTENSION\Api; interface Getorderstatus { public function getorderstatusarray(); } </pre> <p>Lastly, Create "<strong>GetorderstatusModel.php</strong>" file inside model folder of extension.<br ?--> <strong>app\code\VENDOR\EXTENSION\Model</strong> |
1 2 3 |
<!--?php namespace VENDOR\EXTENSION\Model; use VENDOR\EXTENSION\Api\Getorderstatus; class GetorderstatusModel implements Getorderstatus { protected $statusCollectionFactory; public function __construct( \Magento\Sales\Model\ResourceModel\Order\Status\CollectionFactory $statusCollectionFactory ) { $this->statusCollectionFactory = $statusCollectionFactory; } public function getorderstatusarray() { $options = $this->statusCollectionFactory->create()->toOptionArray(); return $options; } } </pre> <p>Now, Go to <strong>Admin -> System -> Integrations</strong> and Get Access Token value and set authorization value into postman application.<br ?--> Then, execute <strong>{base_url}/rest/V1/getorderstatus</strong> this URL in postman. And, you will able to fetch all Magento 2 order status. |
That’s it for today! You have successfully added fetched your Magento 2 order statuses and you are free to customize this code according to your need of fetching data using REST API.
Lastly, if you found this blog helpful, don’t forget to share it with your colleagues and Magento Friends and Let us know if you are facing an issue while implementing this code.
Happy Coding!
1 |
Error show when hit url in postman.
Errors show in log.exception file
C:\\wamp64\\www\\jodhpur\\vendor\\magento\\framework\\Webapi\\ErrorProcessor.php:205, InvalidArgumentException(code: 0): Each getter must have a doc block. See Chirag\\Customorder\\Api\\Getorderstatus::getorderstatusarray() at C:\\wamp64\\www\\jodhpur\\vendor\\magento\\framework\\Reflection\\TypeProcessor.php:743)”}
Please Confirm you have implemented the code properly into the extension, you have to assign proper permission to the authorization User.
How can i display restapi data in frontend of Magento 2? Can you please let me know.
please check this code.
class YOURCLASS
{
protected $zendClient;
public function __construct(
…..
ZendHttpClient $zendClient
…..
) {
$this->zendClient = $zendClient;
}
public function yourfunction()
{
try
{
$this->zendClient->reset();
$this->zendClient->setUri(‘YOUR THIRD PARTY API URL’);
$this->zendClient->setMethod(ZendHttpRequest::METHOD_POST);
$this->zendClient->setHeaders([
‘Content-Type’ => ‘application/json’,
‘Accept’ => ‘application/json’,
‘Authorization’ => ‘Bearer yourvalue’,
]);
$this->zendClient->setParameterPost([
‘yourparameter1’ => ‘yourvalue1’,
]);
$this->zendClient->send();
$response = $this->zendClient->getResponse();
}
catch (ZendHttpExceptionRuntimeException $runtimeException)
{
echo $runtimeException->getMessage();
}
}
}
I created module .After hitting url in postman show errors.
internal Error. Details are available in Magento log file. Report ID: webapi-5f0592f979532
Exception.log show errors
[2020-07-08 09:33:45] main.CRITICAL: Report ID: webapi-5f0592f979532; Message: Each getter must have a doc block. See Chirag\Customorder\Api\Getorderstatus::getorderstatusarray() {“exception”:”[object] (Exception(code: 0): Report ID: webapi-5f0592f979532; Message: Each getter must have a doc block. See Chirpn\\Customorder\\Api\\Getorderstatus::getorderstatusarray() at C:\\wamp64\\www\\jodhpur\\vendor\\magento\\framework\\Webapi\\ErrorProcessor.php:205, InvalidArgumentException(code: 0): Each getter must have a doc block. See Chirag\\Customorder\\Api\\Getorderstatus::getorderstatusarray() at C:\\wamp64\\www\\jodhpur\\vendor\\magento\\framework\\Reflection\\TypeProcessor.php:743)
Please help