Как я могу получить список продуктов с подробной информацией в остальном API-интерфейсе magento2

Я работаю над собственным сервером мобильного приложения - magento2, и я хочу отображать продукт после того, как клиент выбрал категорию. Я могу получить список продуктов по категориям в запросе на отдых, но этот список не содержит подробных сведений о продукте.

Запрос: http://localhost/magento2/index.php/rest/V1/categories/24/products

(24 - идентификатор категории)

Ответ: [{"sku": "WH01", "position": 1, "category_id": "24"}, ...]

Раньше в списке продуктов Magento 1.9 было что-то вроде



       {
    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"
    }

Что мне делать, чтобы получить больше информации о продукте, чтобы я мог показывать изображение и другие вещи в мобильном приложении?


person er.vish    schedule 09.04.2015    source источник
comment
Вам удалось найти решение для этого?   -  person nr5    schedule 04.12.2015


Ответы (4)


Возможно, вы можете попробовать GET /V1/products/:sku REST API, чтобы получить все подробности.

Ссылка

Возвращаемое значение будет представлять \Magento\Catalog\Api\Data\ProductInterface (включая дополнительные атрибуты).

Ссылка для справки >

Проверьте \Magento\Catalog\Api\ProductRepositoryInterface::get, который обслуживает GET /V1/products/:sku REST API.

Вы можете сделать несколько запросов для всех артикулов продукта.

OR

Вы можете использовать API поиска для получения всего списка за один запрос на основе ваших критериев:

Например:

http://localhost/magento2/index.php/rest/V1/products?searchCriteria[filter_groups][0][filters][0][field]=sku&searchCriteria[filter_groups][0][filter] »

В случае товаров с артикулами ищутся простые и Simple2.

person airboss    schedule 06.05.2015
comment
@ airboss - в вашем ответе предлагается, как получить подробную информацию о таком продукте, но вопрос заключался в том, как получить список продуктов, используя идентификатор категории. Вопрос был очень простым, но ваш ответ очень манипулятивен. - person Jigar; 17.05.2016

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();
}

Точно так же вы можете изменить $ requestUrl и отфильтровать список продуктов по идентификатору категории и получить подробную информацию о продукте.

Пожалуйста, подтвердите, решает ли это вашу проблему или нет. Иначе выложу другое решение.

person Ipsita Rout    schedule 15.07.2016


Пожалуйста, попробуйте использовать эту конечную точку вместо вашей конечной точки:

/V1/products?searchCriteria[filter_groups][0][filters][0][field]=category_id&searchCriteria[filter_groups][0][filters][0][value]=24&searchCriteria[filter_groups][0][filters][0][condition_type]=eq

Это то же самое, что @Alexander Timonchev, но вы должны удалить пробел после &

person WISAM HAKIM    schedule 19.03.2018