¿Cómo puedo obtener la lista de productos con sus detalles en la API de descanso? ​​Estoy en magento2


9

Estoy trabajando en una aplicación móvil nativa y quiero mostrar el producto después de que el cliente seleccione una categoría. Puedo obtener una lista del producto por categoría en la solicitud de descanso, pero esa lista no tiene muchos detalles sobre el producto.

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

( 24 es ID de categoría )

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

Anteriormente en Magento 1.9la lista de productos había algo como

{
2: {
entidad_id: "2"
type_id: "simple"
sku: "Levis Bagpack"
descripción: "Bagpack"
short_description: "Bagpack"
meta_keyword: null
nombre: "Levis Bagpack"
meta_title: null
meta_description: null
regular_price_with_tax: 45
regular_price_without_tax: 45
precio_final_con_tax: 45
precio_final_sin_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"
} -

¿Qué debo hacer para obtener más información sobre el producto para poder mostrar imágenes y otras cosas en la aplicación móvil?


¿Cómo invocar la API SOAP (ejemplo: API del cliente)?
Manoj Kumar

Respuestas:


4

Tal vez pueda probar GET / V1 / products /: sku REST API para obtener todos los detalles ( https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/etc/webapi.xml # l36 )

El valor devuelto será la representación de \ Magento \ Catalog \ Api \ Data \ ProductInterface (incluidos los atributos adicionales) https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/Api/Data /ProductInterface.php

Verifique \ Magento \ Catalog \ Api \ ProductRepositoryInterface :: obtenga los servicios de GET / V1 / products /: sku REST API.

Puede realizar múltiples solicitudes para todos los SKU de productos.

O

Puede usar la API de búsqueda para obtener la lista completa en una sola solicitud según sus criterios:

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

En este caso, se están buscando productos con SKU: simple y Simple2.


¿Cómo invocar la API SOAP (ejemplo: API del cliente)?
Manoj Kumar


intentamos pero me llamó la atención por esto, vea el hilo magento.stackexchange.com/questions/76569/…
Manoj Kumar

@airboss la URL de la imagen en 192.168.1.180/magento/index.php/rest/V1/products/SKU api no es una url completa ... es algo así como '{"attribute_code": "small_image", "value ":" /6/4/64275-152378-large.jpg "}, '. ¿Alguna idea de cómo obtener el prefijo para esta URL?
nr5

use el servicio storeConfigManager y obtenga la baseMediaUrl y luego agregue la ruta que obtiene de la imagen para obtener su ruta completa. También puede usar secureMediaUrl para la url de base segura. - Enlace: devdocs.magento.com/swagger/index.html#!/…
Chuck


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

Del mismo modo, puede cambiar $ requestUrl y filtrar la lista de productos por ID de categoría y obtener detalles del producto.

Confirme si resuelve su problema o no. De lo contrario, publicaré otra solución.


1

Además de lo que dijo @airboss, estamos trabajando en nuestro estilo de 'integración' de API. Esa es una llamada a la API que tiene atributos extensibles agregados (Catálogo, Ventas).

En unas pocas semanas, debería poder realizar una llamada GET / V1 / products /: sku REST API y obtener todo lo relacionado con ese producto (si está autorizado como cliente, no verá el objeto de inventario). Por ejemplo, si llama a un sku que es un producto incluido, obtendría el producto simple, una variedad de opciones de productos, una variedad de enlaces de productos, URL de medios y el objeto de inventario *. Lo mismo cuando usas la API de búsqueda (pronto lo llamaremos filtro).

-Arrojar


la API de V1 / productos no incluye el parámetro category_id? ¿Alguna solución para eso?
nr5
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.