Come posso ottenere l'elenco dei prodotti con i relativi dettagli nell'API di riposo Sono su magento2


9

Sto lavorando su un'applicazione mobile nativa e voglio visualizzare il prodotto dopo che il cliente ha selezionato una categoria. Sono in grado di ottenere un elenco del prodotto per categoria nella richiesta di riposo ma tale elenco non ha molti dettagli sul prodotto.

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

( 24 è l'ID categoria )

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

Prima nella Magento 1.9lista dei prodotti era qualcosa di simile

{
2: {
entity_id: "2"
type_id: "semplice"
sku: "Levis Bagpack"
descrizione: "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"
} -

Cosa devo fare per ottenere maggiori informazioni sul prodotto in modo da poter mostrare immagini e altre cose nell'app mobile?


come invocare l'API SOAP (esempio: API cliente)?
Manoj Kumar,

Risposte:


4

Magari puoi provare GET / V1 / products /: sku REST API per ottenere tutti i dettagli ( https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/etc/webapi.xml # l36 )

Il valore restituito sarà la rappresentazione di \ Magento \ Catalog \ Api \ Data \ ProductInterface (inclusi gli attributi aggiuntivi) https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/Api/Data /ProductInterface.php

Controlla \ Magento \ Catalog \ Api \ ProductRepositoryInterface :: ottieni quali servizi GET / V1 / products /: sku REST API.

È possibile effettuare più richieste per tutti gli SKU del prodotto.

O

Puoi utilizzare l'API di ricerca per recuperare l'intero elenco in una singola richiesta in base ai tuoi criteri:

es: http: //localhost/magento2/index.php/rest/V1/products? searchCriteria [filtri_gruppi] [0] [filtri] [0] [campo] = sku & searchCriteria [filtro_gruppi] [0] [filtri] [0] [value] = semplice e searchCriteria [filter_groups] [0] [filtri] [1] [field] = SKU & searchCriteria [filter_groups] [0] [filtri] [1] [value] = Simple2 & searchCriteria [filter_groups] [0] [filtri] [0 ] [condition_type] = eq & searchCriteria [CURRENT_PAGE] = 1 & searchCriteria [PAGE_SIZE] = 2

In questo caso vengono cercati i prodotti con SKU - simple e Simple2.


come invocare l'API SOAP (esempio: API cliente)?
Manoj Kumar,


ci abbiamo provato ma mi ha colpito, per favore, vedi la discussione magento.stackexchange.com/questions/76569/…
Manoj Kumar,

@airboss l'URL dell'immagine nel 192.168.1.180/magento/index.php/rest/V1/products/SKU api non è un URL completo .. è qualcosa come questo '{"attributo_codice": "small_image", "valore ":" /6/4/64275-152378-large.jpg "}, '. Qualche idea su come ottenere il prefisso per questo URL?
nr5

utilizzare il servizio storeConfigManager e ottenere baseMediaUrl, quindi aggiungere il percorso che si ottiene dall'immagine per trovare il percorso completo. Puoi anche utilizzare secureMediaUrl per l'URL di base sicura. - 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();
}

Allo stesso modo è possibile modificare $ requestUrl e filtrare l'elenco prodotti per ID categoria e ottenere i dettagli del prodotto.

Conferma se risolve il problema o meno. Altrimenti posterò un'altra soluzione.


1

Oltre a quanto affermato da @airboss, stiamo lavorando al nostro stile di "integrazione" delle API. Questa è una chiamata API con attributi estendibili (catalogo, vendite).

In poche settimane dovresti essere in grado di eseguire una chiamata API REST GET / V1 / products /: sku e ottenere tutto ciò che riguarda quel prodotto (se sei autorizzato come cliente non vedrai l'oggetto dell'inventario). Ad esempio, se chiami uno sku che è un prodotto in bundle, otterrai il prodotto semplice, una matrice di opzioni di prodotto, una matrice di collegamenti a prodotti, URL di media e oggetto di inventario *. Stessa cosa quando usi l'API di ricerca (la chiameremo filtro invece presto).

-Mandrino


l'API V1 / products non include il parametro category_id? Qualche soluzione per questo?
nr5
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.