Как я могу получить список продуктов с его подробностями в остальных 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: {
entity_id: "2"
type_id: "простой"
sku: "Levis Bagpack"
описание: "Bagpack"
short_description: "Bagpack"
meta_keyword: null
название: "Левис Багпак"
meta_title: null
meta_description: null
normal_price_with_tax: 45
normal_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"
} -

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


Как вызвать 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 \ Catalog \ Api \ Data \ ProductInterface (включая дополнительные атрибуты) https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/Api/Data /ProductInterface.php

Проверьте \ Magento \ Catalogue \ Api \ ProductRepositoryInterface :: узнать, какие службы используют REST API GET / V1 / products /: sku.

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

ИЛИ

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

Например : http: //localhost/magento2/index.php/rest/V1/products? searchCriteria [filter_groups] [0] [filters] [0] [field] = sku & searchCriteria [filter_groups] [0] [filters] [0] [значение] = простой & searchCriteria [filter_groups] [0] [фильтры] [1] [поле] = ы & searchCriteria [filter_groups] [0] [фильтры] [1] [значение] = Simple2 & searchCriteria [filter_groups] [0] [фильтры] [0 ] [condition_type] = экв & searchCriteria [CURRENT_PAGE] = 1 & searchCriteria [PAGE_SIZE] = 2

В этом случае производится поиск товаров с номерами SKU - simple и Simple2.


Как вызвать SOAP API (пример: Клиентский API)?
Манодж Кумар


мы пытались, но я поражен этим, пожалуйста, смотрите ветку magento.stackexchange.com/questions/76569/…
Манодж Кумар

@airboss URL-адрес изображения в 192.168.1.180/magento/index.php/rest/V1/products/SKU api не является полным URL-адресом, это что-то вроде '{"attribute_code": "small_image", "value ":" /6/4/64275-152378-large.jpg "}, '. Любая идея, как получить префикс для этого URL?
№5

используйте службу storeConfigManager и получите baseMediaUrl, затем добавьте путь, который вы получите из изображения, чтобы получить полный путь. Вы также можете использовать secureMediaUrl для безопасного базового URL. - Ссылка: devdocs.magento.com/swagger/index.html#!/…
Чак

2

В дополнение (не в качестве замены) к другим ответам, если после этого вам все еще не хватает какой-либо информации, вы можете заполнить пробелы, написав свои собственные функции API: https://alankent.wordpress.com/2015/07/24 / создание мини-новый покой веб-сервис-в-Magento-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, к которому добавляются расширяемые атрибуты (Каталог, Продажи).

Через несколько недель вы сможете выполнить вызов REST API GET / V1 / products /: sku и получить все, что связано с этим продуктом (если вы авторизованы как клиент, вы не увидите объект инвентаря). Например, если вы называете sku, который является связанным продуктом, вы получите простой продукт, массив опций продукта, массив ссылок на товары, URL-адреса СМИ и объект инвентаризации *. То же самое, когда вы используете API поиска (вместо этого мы будем называть его фильтром).

-Chuck


API V1 / products не включает параметр category_id? Любой обходной путь для этого?
№5
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.