Rest API Magento 2 Product list by Postman
Rest API Magento 2 Product list by Postman
Rest API Magento 2 Product list by Postman
Get product list need to create simple module usign api,model,webapi.xml and di.xml
Create method in api class.
<?php namespace Vendor\Module\Api; /** * Interface ProductStockInterface */ interface ProductDataInterface { /** * get products. * * @return array */ public function getProData(); }
Create webapi.xml under etc folder
webapi.xml
<route url="/V1/products" method="GET"> <service class="Vendor\Module\Api\ProductDataInterface" method="getProData"/> <resources> <resource ref="Vendor_Module::products_data"/> </resources> </route>
Create di.xml under etc folder.
di.xml
<preference for="Vendor\Module\Api\ProductDataInterface" type="Vendor\Module\Model\Api\ProductData" />
Model\Api\ProductData
<?php namespace Vendor\Module\Model\Api; use Magento\Catalog\Model\Product; use Magento\Catalog\Model\ResourceModel\Category\CollectionFactory; /** * Model class ProductData */ class ProductData implements \Vendor\Module\Api\ProductDataInterface { /** * @var \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory */ protected $productCollection; protected $product; protected $categoryCollection; protected $_currencyinterface; /** * @param \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollection */ public function __construct( \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollection,Product $product,CollectionFactory $categoryCollection,\Magento\Framework\Pricing\PriceCurrencyInterface $currencyinterface ) { $this->productCollection = $productCollection; $this->product = $product; $this->categoryCollection = $categoryCollection; $this->_currencyinterface = $currencyinterface; } /** * get products. * * @return array */ public function getProData() { $returnArray = []; try{ $productCollection = $this->productCollection->create() ->addAttributeToSelect('*') // ->setPageSize(500) ->addAttributeToFilter('status',\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED) ->addAttributeToFilter('type_id', \Magento\Catalog\Model\Product\Type::TYPE_SIMPLE) ->joinField( 'qty', 'cataloginventory_stock_item', 'qty', 'product_id=entity_id', '{{table}}.stock_id=1', 'left' ); foreach ($productCollection as $product) { $returnArray[] = [ "sku" => $product->getSku(), //add data accordingly ]; } catch (\Magento\Framework\Exception\LocalizedException $e) { $returnArray['error'] = $e->getMessage(); $returnArray['status'] = 0; } catch (\Exception $e) { $returnArray['error'] = __('unable to process request'); $returnArray['status'] = 2; } return $returnArray; } } ?>
Return data postman.