Magento 2 REST API is the best way of developing the cross-platform app to communicate with your Magento 2 stores. While developing an app, you would require to get value of custom attribute on Magento 2 REST API and use this further in the app. Today, I have come up with the complete guide to get value of custom attribute on Magento 2 REST API. Additionally, in Magento 2 get customer data from attribute value it becomes a crucial aspect in this context.
Steps to Get Value of Custom Attribute on Magento 2 Rest API:
Create/Add a new column in ‘sales_order‘ table and set value for the existing order.
Create a new file at app\code\Vendor\Module\etc\extension_attributes.xml and put the below code:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Api/etc/extension_attributes.xsd">
<extension_attributes for="Magento\Sales\Api\Data\OrderInterface">
<attribute code="custom_attribute" type="string" />
</extension_attributes>
</config>
Create event.xml at app\code\Vendor\Module\etc\events.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="sales_order_load_after">
<observer name="sales_order_load_custom_attribute" instance="Vendor\Module\Observer\Sales\OrderLoadAfter" />
</event>
</config>
Create OrderLoadAfter.php at app\code\Vendor\Module\Observer\Sales\OrderLoadAfter.php
<?php
namespace Vendor\Module\Observer\Sales;
use Magento\Framework\Event\ObserverInterface;
class OrderLoadAfter implements ObserverInterface
{
public function execute(\Magento\Framework\Event\Observer $observer)
{
$order = $observer->getOrder();
$extensionAttributes = $order->getExtensionAttributes();
if ($extensionAttributes === null) {
$extensionAttributes = $this->getOrderExtensionDependency();
}
$attr = $order->getData('custom_attribute');
$extensionAttributes->setCustomAttribute($attr);
$order->setExtensionAttributes($extensionAttributes);
}
private function getOrderExtensionDependency()
{
$orderExtension = \Magento\Framework\App\ObjectManager::getInstance()->get(
'\Magento\Sales\Api\Data\OrderExtension'
);
return $orderExtension;
}
}
After getting an order on Magento 2 Rest API, you can see the custom attribute in the response.
That’s all about getting value of custom attribute on Magento 2 REST API. Let me know which custom attribute value did you get using the code above and how you used the value in your app. Also you can Magento 2 add category attribute to custom attribute group integrating a third-party API and using a category attribute!