Como posso obter a lista de produtos com seus detalhes na API restante? Estou no magento2

9

Estou trabalhando no aplicativo móvel nativo e quero exibir o produto depois que o cliente selecionou uma categoria. Consigo obter a lista do produto por categoria na solicitação de descanso, mas essa lista não tem muitos detalhes sobre o produto.

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

( 24 é o código da categoria )

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

No início da Magento 1.9lista de produtos havia algo como

{
2: {
entity_id: "2"
type_id: "simples"
sku: "Levis Bagpack"
descrição: "Bagpack"
short_description: "Bagpack"
meta_keyword: null
nome: "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"
} -

O que devo fazer para obter mais informações sobre o produto para mostrar imagens e outras coisas no aplicativo para dispositivos móveis?

VishnuMcube
fonte
como chamar a API SOAP (exemplo: API do cliente)?
Manoj Kumar

Respostas:

4

Talvez você possa experimentar a API REST GET / V1 / products /: sku para obter todos os detalhes ( https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/etc/webapi.xml # l36 )

O valor retornado será representação de \ Magento \ Catalog \ Api \ Data \ ProductInterface (incluindo os atributos adicionais) https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/Api/Data /ProductInterface.php

Verifique \ Magento \ Catalog \ Api \ ProductRepositoryInterface :: obtenha quais serviços a API REST GET / V1 / products /: sku.

Você pode fazer várias solicitações para todos os SKUs do produto.

OU

Você pode usar a API de pesquisa para buscar a lista inteira em uma única solicitação com base em seus critérios:

ex: http: //localhost/magento2/index.php/rest/V1/products? searchCriteria [grupos de filtros] [0] [filtros] [0] [campo] = sku e critérios de pesquisa [grupos de filtros] [0] [filtros] [0] [valor] = simples & critérios de pesquisa [grupos de filtros] [0] [filtros] [1] [campo] = sku & critérios de pesquisa [grupos de filtros] [0] [filtros] [1] [valor] = Simples2 & critérios de pesquisa [grupos de filtros] [0] [filtros] [0 ] [type_ condition] = eq & searchCriteria [current_page] = 1 & searchCriteria [tamanho da página] = 2

Nesse caso, produtos com SKUs - simples e Simple2 estão sendo pesquisados.

airboss
fonte
como chamar a API SOAP (exemplo: API do cliente)?
Manoj Kumar
nós tentamos, mas eu estou impressionado sobre este tópico veja por favor magento.stackexchange.com/questions/76569/...
Manoj Kumar
@airboss a URL da imagem no api 192.168.1.180/magento/index.php/rest/V1/products/SKU não é um URL completo .. é algo como '{"attribute_code": "small_image", "value ":" /6/4/64275-152378-large.jpg "}, '. Alguma idéia de como obter o prefixo para este URL?
Nr5
use o serviço storeConfigManager e obtenha o baseMediaUrl e adicione o caminho que você obtém da imagem para criar seu caminho completo. Você também pode usar secureMediaUrl para o URL base seguro. - Link: 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();
}

Da mesma forma, você pode alterar $ requestUrl e filtrar a lista de produtos por ID de categoria e obter detalhes do produto.

Por favor, confirme se resolve o seu problema ou não. Senão eu vou postar outra solução.

Ipsita Rout
fonte
1

Além do que a @airboss disse, estamos trabalhando no nosso estilo de 'integração' de APIs. Essa é uma chamada de API que possui atributos extensíveis adicionados (catálogo, vendas).

Em algumas semanas, você poderá fazer uma chamada à API REST GET / V1 / products /: sku e obter tudo relacionado a esse produto (se você estiver autorizado como cliente, não verá o objeto de inventário). Por exemplo, se você chamar um sku que é um produto em pacote, obterá o produto simples, uma variedade de opções de produtos, uma variedade de links de produtos, URLs de mídia e o objeto de inventário *. A mesma coisa quando você usa a API de pesquisa (em breve, chamaremos de filtro).

-Mandril

Mandril
fonte
a API V1 / products não inclui o parâmetro category_id? Alguma solução alternativa para isso?
Nr5