Wie kann ich eine Produktliste mit ihren Details in der Rest-API erhalten? Ich bin auf magento2


9

Ich arbeite an einer nativen mobilen Anwendung und möchte das Produkt anzeigen, nachdem der Kunde eine Kategorie ausgewählt hat. Ich kann eine Liste des Produkts nach Kategorie in der Restanfrage abrufen, aber diese Liste enthält nicht viele Details zum Produkt.

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

( 24 ist Kategorie ID )

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

Früher in der Magento 1.9Produktliste war so etwas wie

{
2: {
entity_id: "2"
type_id: "einfach"
sku: "Levis Bagpack"
Beschreibung: "Bagpack"
Kurzbeschreibung: "Bagpack"
meta_keyword: null
Name: "Levis Bagpack"
meta_title: null
meta_description: null
regulärer_Preis_mit_Tax: 45
regulärer_Preis_ohne_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"
} -

Was kann ich tun, um weitere Informationen zum Produkt zu erhalten, damit ich Bilder und andere Dinge in der mobilen App anzeigen kann?


Wie rufe ich die SOAP-API auf (Beispiel: Kunden-API)?
Manoj Kumar

Antworten:


4

Vielleicht können Sie die REST-API GET / V1 / products /: sku ausprobieren, um alle Details abzurufen ( https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/etc/webapi.xml) # l36 )

Der zurückgegebene Wert ist die Darstellung von \ Magento \ Catalog \ Api \ Data \ ProductInterface (einschließlich der zusätzlichen Attribute) https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/Api/Data /ProductInterface.php

Überprüfen Sie \ Magento \ Catalog \ Api \ ProductRepositoryInterface :: Get, welche Dienste die GET / V1 / products /: sku-REST-API bereitstellen.

Sie können mehrere Anforderungen für alle Produkt-SKUs stellen.

ODER

Sie können die Such-API verwenden, um die gesamte Liste in einer einzelnen Anforderung basierend auf Ihren Kriterien abzurufen:

Beispiel: http: //localhost/magento2/index.php/rest/V1/products? searchCriteria [Filtergruppen] [0] [Filter] [0] [Feld] = sku & searchCriteria [Filtergruppen] [0] [Filter] [0] [Wert] = einfach & Suchkriterien [Filtergruppen] [0] [Filter] [1] [Feld] = Sku & Suchkriterien [Filtergruppen] [0] [Filter] [1] [Wert] = Einfach2 & Suchkriterien [Filtergruppen] [0] [Filter] [0 ] [condition_type] = eq & searchCriteria [current_page] = 1 & searchCriteria [page_size] = 2

In diesem Fall werden Produkte mit SKUs - simple und Simple2 - gesucht.


Wie rufe ich die SOAP-API auf (Beispiel: Kunden-API)?
Manoj Kumar


Wir haben es versucht, aber ich bin beeindruckt,
Manoj Kumar

@airboss Die URL des Bildes in der API 192.168.1.180/magento/index.php/rest/V1/products/SKU ist keine vollständige URL. Es ist ungefähr so ​​'{"attribute_code": "small_image", "value ":" /6/4/64275-152378-large.jpg "}, '. Irgendeine Idee, wie man das Präfix für diese URL erhält?
Nr. 5

Verwenden Sie den storeConfigManager-Dienst und rufen Sie die baseMediaUrl ab. Fügen Sie dann den Pfad hinzu, den Sie vom Image erhalten, um Ihren vollständigen Pfad zu erhalten. Sie können auch SecureMediaUrl für die sichere Basis-URL verwenden. - 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();
}

Ebenso können Sie $ requestUrl ändern und die Produktliste nach Kategorie-ID filtern und Produktdetails abrufen.

Bitte bestätigen Sie, ob es Ihr Problem löst oder nicht. Sonst werde ich eine andere Lösung posten.


1

Zusätzlich zu den Aussagen von @airboss arbeiten wir an unserem API-Integrationsstil. Dies ist ein API-Aufruf, dem erweiterbare Attribute hinzugefügt werden (Katalog, Vertrieb).

In einigen Wochen sollten Sie in der Lage sein, einen REST-API-Aufruf von GET / V1 / products /: sku durchzuführen und alles zu diesem Produkt abzurufen (wenn Sie als Kunde autorisiert sind, wird das Inventarobjekt nicht angezeigt). Wenn Sie beispielsweise eine SKU aufrufen, die ein gebündeltes Produkt ist, erhalten Sie das einfache Produkt, eine Reihe von Produktoptionen, eine Reihe von Produktlinks, Medien-URLs und das Inventarobjekt *. Dasselbe gilt, wenn Sie die Such-API verwenden (wir werden sie stattdessen bald Filter nennen).

-Futter


Die V1 / products-API enthält keinen Parameter category_id. Irgendeine Problemumgehung dafür?
Nr. 5
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.