Як я можу отримати список продуктів з його деталізацією в API відпочинку Я перебуваю на magento2


9

Я працюю над власним мобільним додатком і хочу відображати продукт після того, як клієнт обрав категорію. Я можу отримати список товару за категоріями у запиті про відпочинок, але в цьому списку немає багато деталей щодо товару.

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

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

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

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

{
2: {
entit_id: "2"
type_id: "простий"
sku: "Levis Bagpack"
опис: "Bagpack"
короткий опис: "Bagpack"
meta_keyword: null
назва: "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: вірно
image_url: "http://172.16.8.24:8080/magento/media/catalog/product/cache/0/image/9df78eab33525d08d6e5fb8d27136e95/images/catalog/product/placeholder/image.jpg"
} -

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


як викликати SOAP API (приклад: API клієнта)?
Маной Кумар

Відповіді:


4

Можливо, ви можете спробувати GET / V1 / products /: sku REST API, щоб отримати всі деталі ( https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/etc/webapi.xml # l36 )

Повернене значення буде поданням \ Magento \ Каталог \ Api \ Data \ ProductInterface (включаючи додаткові атрибути) https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/Api/Data /ProductInterface.php

Перевірте \ Magento \ Каталог \ Api \ ProductRepositoryInterface :: отримайте, які сервіси API GET / V1 / products /: sku REST.

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

АБО

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

Наприклад : http: //localhost/magento2/index.php/rest/V1/products? searchCriteria [filter_groups] [0] [фільтри] [0] [поле] = sku & searchКритерії [filter_groups] [0] [фільтри] [0] [value] = simple & searchCriteria [filter_groups] [0] [фільтри] [1] [поле] = sku & searchCriteria [filter_groups] [0] [фільтри] [1] [значення] = Simple2 & searchCriteria [filter_groups] [0] [фільтри] [0 ] [condition_type] = eq & searchCriteria [current_page] = 1 & searchCriteria [page_size] = 2

У цьому випадку шукаються продукти з SKU, простими та простими2.


як викликати SOAP API (приклад: API клієнта)?
Маной Кумар


ми спробували, але мене вразило це, будь ласка, дивіться тему magento.stackexchange.com/questions/76569/…
Кумар

@airboss URL-адреса зображення в apі 192.168.1.180/magento/index.php/rest/V1/products/SKU не є повною URL-адресою. Це щось на зразок цього "{" attribute_code ":" small_image "," value ":" /6/4/64275-152378-large.jpg "}, '. Якась ідея, як отримати префікс для цієї URL-адреси?
nr5

скористайтеся послугою storeConfigManager і отримайте baseMediaUrl, а потім додайте шлях, який ви отримаєте від зображення, щоб вийшов ваш повний шлях. Ви також можете використовувати secureMediaUrl для URL-адреси захищеної бази. - Посилання: devdocs.magento.com/swagger/index.html#!/…
Чак

2

Крім того (не як заміна) до інших відповідей, якщо після цього вам все-таки не вистачає інформації, ви можете заповнити прогалини, написавши власні функції API: https://alankent.wordpress.com/2015/07/24 / створення-новий-відпочинок-веб-сервіс-в-магенто-2 /


як викликати SOAP API (приклад: API клієнта)?
Маной Кумар

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

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

Підтвердьте, вирішує це проблема чи ні. Ще я опублікую інше рішення.


1

На додаток до того, що сказав @airboss, ми працюємо над нашим "інтеграційним" стилем API. Це виклик API, який додає до нього розширювані атрибути (Каталог, Продажі).

Через кілька тижнів ви зможете здійснити виклик GET / V1 / products /: sku REST API і отримати все, що стосується цього продукту (якщо ви отримаєте уповноваження як клієнт, ви не побачите об’єкт інвентаризації). Наприклад, якщо ви називаєте sku, який є пакетом продукту, ви отримаєте простий продукт, масив параметрів продукту, масив посилань на продукти, медіа-адреси та об'єкт інвентаризації *. Те саме, що ви використовуєте API пошуку (замість цього незабаром будемо називати його фільтром).

-Чак


API V1 / products не включає параметр category_id? Якогось рішення для цього?
nr5
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.