How can I get product list with its detail in rest API backend is magento2

10,733

Solution 1

Maybe you can try the GET /V1/products/:sku REST API to get all the details.

Link

The returned value will be a representation of \Magento\Catalog\Api\Data\ProductInterface (including the additional attributes)

Link for Reference

Check \Magento\Catalog\Api\ProductRepositoryInterface::get which services the GET /V1/products/:sku REST API.

You can make multiple requests for all product SKUs.

OR

You can use the search API to fetch the entire list in a single request based on your criteria:

For example:

http://localhost/magento2/index.php/rest/V1/products?searchCriteria[filter_groups][0][filters][0][field]=sku&searchCriteria[filter_groups][0][filters][0][value]=simple&searchCriteria[filter_groups][0][filters][1][field]=sku&searchCriteria[filter_groups][0][filters][1][value]=Simple2&searchCriteria[filter_groups][0][filters][0][condition_type]=eq&searchCriteria[current_page]=1&searchCriteria[page_size]=2

In the case of products with SKUs - simple and Simple2 are being searched.

Solution 2

define('BASEURL','http://localhost/magento20_0407/');

$apiUser = 'testUser'; 
$apiPass = 'admin123';
$apiUrl = BASEURL.'index.php/rest/V1/integration/admin/token';
/*
    Magento 2 REST API Authentication
*/
$data = array("username" => $apiUser, "password" => $apiPass);                                                                    
$data_string = json_encode($data);                       
try{
    $ch = curl_init($apiUrl); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
        'Content-Type: application/json',                                                                                
        'Content-Length: ' . strlen($data_string))                                                                       
    );       
    $token = curl_exec($ch);
    $token = json_decode($token);
    if(isset($token->message)){
        echo $token->message;
    }else{
        $key = $token;
    }
}catch(Exception $e){
    echo 'Error: '.$e->getMessage();
}


/*
    Get Product By SKU REST API Magento 2
    Use above key into header
*/
$headers = array("Authorization: Bearer $key"); 
//$requestUrl = BASEURL.'index.php/rest/V1/products/24-MB01';//24-MB01 is the sku.
//$requestUrl = BASEURL.'index.php/rest/V1/products?searchCriteria[page_size]=10';// get total 10 products
//$requestUrl = BASEURL.'index.php/rest/V1/categories/24/products';// 24 category id
$requestUrl = BASEURL.'index.php/rest/V1/products?searchCriteria=';//get all products

$ch = curl_init();
try{
    $ch = curl_init($requestUrl); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);   

    $result = curl_exec($ch);
    $result = json_decode($result);

    if(isset($result->message)){
        echo $result->message;
    }else{
        print_r($result);
    }
}catch(Exception $e){
    echo 'Error: '.$e->getMessage();
}

Similarly you can change $requestUrl and filter product list by category id and get product detail.

Please confirm whether it solves your problem or not. Else I'll post another solution.

Share:
10,733
er.vish
Author by

er.vish

Updated on June 23, 2022

Comments

  • er.vish
    er.vish almost 2 years

    I'm working on native mobile application backend is magento2 and I want to display product after customer selected a category. I am able to get list of the product by category in rest request but that list don't have much details about the product.

    Request : http://localhost/magento2/index.php/rest/V1/categories/24/products

    (24 is category ID)

    Response : [{"sku":"WH01","position":1,"category_id":"24"},...]

    Earlier in Magento 1.9 product list was something like

    
    
           {
        2: {
        entity_id: "2"
        type_id: "simple"
        sku: "Levis Bagpack"
        description: "Bagpack"
        short_description: "Bagpack"
        meta_keyword: null
        name: "Levis Bagpack"
        meta_title: null
        meta_description: null
        regular_price_with_tax: 45
        regular_price_without_tax: 45
        final_price_with_tax: 45
        final_price_without_tax: 45
        is_saleable: true
        image_url: "http://172.16.8.24:8080/magento/media/catalog/product/cache/0/image/9df78eab33525d08d6e5fb8d27136e95/images/catalog/product/placeholder/image.jpg"
        }
    
    

    What should I do to get more info about product so I can show image and other things in mobile app ?

  • Jigar
    Jigar almost 8 years
    @airboss- your reply suggest how to get details for such product but the question was how to get list of products using category id. Question was very simple but your answer is very manipulating.