Jak mogę uzyskać listę produktów wraz z szczegółami w spoczynkowym API Jestem na magento2

9

Pracuję nad natywną aplikacją mobilną i chcę wyświetlać produkt po wybraniu kategorii przez klienta. Jestem w stanie uzyskać listę produktu według kategorii w żądaniu odpoczynku, ale ta lista nie zawiera wielu szczegółów na temat produktu.

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

( 24 jest identyfikatorem kategorii )

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

Wcześniej na Magento 1.9liście produktów było coś takiego

{
2: {
entity_id: „2”
typ_id: „prosty”
sku: „Levis Bagpack”
opis: „Bagpack”
short_description: „Bagpack”
słowo kluczowe meta_keys: null
nazwa: „Levis Bagpack”
meta_title: null
meta_description: null
regular_price_with_tax: 45
regular_price_with_tax: 45
final_price_with_tax: 45
cena_końcowa bez podatku: 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"
} -

Co powinienem zrobić, aby uzyskać więcej informacji o produkcie, aby móc wyświetlać obraz i inne rzeczy w aplikacji mobilnej?

VishnuMcube
źródło
jak wywołać SOAP API (przykład: Customer API)?
Manoj Kumar

Odpowiedzi:

4

Może możesz wypróbować interfejs API REST GET / V1 / products /: sku, aby uzyskać wszystkie szczegóły ( https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/etc/webapi.xml # l36 )

Zwrócona wartość będzie reprezentacją \ Magento \ Catalog \ Api \ Data \ ProductInterface (w tym dodatkowe atrybuty) https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/Api/Data /ProductInterface.php

Sprawdź \ Magento \ Catalog \ Api \ ProductRepositoryInterface :: pobierz, które usługi REST API GET / V1 / products /: sku.

Możesz złożyć wiele żądań dla wszystkich kodów SKU produktu.

LUB

Możesz użyć interfejsu API wyszukiwania, aby pobrać całą listę w jednym żądaniu na podstawie kryteriów:

np .: http: //localhost/magento2/index.php/rest/V1/products? searchCriteria [filter_groups] [0] [filtry] [0] [field] = sku & searchCriteria [filter_groups] [0] [filtry] [0] [wartość] = simple & searchCriteria [grupy_filtrów] [0] [filtry] [1] [pole] = SKU & searchCriteria [grupy_filtrów] [0] [filtry] [1] [wartość] = Simple2 i kryteria wyszukiwania [grupy_filtrów] [0] [filtry] [0 ] [condition_type] = eq & searchCriteria [current_page] = 1 & searchCriteria [page_size] = 2

W tym przypadku wyszukiwane są produkty z kodami SKU - simple i Simple2.

airboss
źródło
jak wywołać SOAP API (przykład: Customer API)?
Manoj Kumar
próbowaliśmy, ale uderza mnie to, proszę zobaczyć wątek magento.stackexchange.com/questions/76569/…
Manoj Kumar
@airboss adres URL obrazu w 192.168.1.180/magento/index.php/rest/V1/products/SKU API nie jest pełnym adresem URL .. jego coś w rodzaju „{” atrybut_kod ”:„ small_image ”,„ wartość ” „:” /6/4/64275-152378-large.jpg „},”. Masz pomysł, jak uzyskać prefiks dla tego adresu URL?
nr5
skorzystaj z usługi storeConfigManager i uzyskaj baseMediaUrl, a następnie dodaj ścieżkę otrzymaną z obrazu, aby uzyskać pełną ścieżkę. Możesz także użyć secureMediaUrl jako bezpiecznego podstawowego adresu URL. - 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();
}

Podobnie możesz zmienić $ requestUrl i filtrować listę produktów według identyfikatora kategorii i uzyskać szczegółowe informacje o produkcie.

Potwierdź, czy to rozwiązuje problem, czy nie. W przeciwnym razie opublikuję inne rozwiązanie.

Ipsita Rout
źródło
1

Oprócz tego, co powiedział @airboss, pracujemy nad naszym interfejsem API w stylu „integracji”. Jest to wywołanie API, które ma dodatkowe atrybuty rozszerzalne (katalog, sprzedaż).

Za kilka tygodni powinieneś być w stanie wykonać wywołanie REST API GET / V1 / products /: sku i uzyskać wszystko związane z tym produktem (jeśli jesteś autoryzowany jako klient, nie zobaczysz obiektu zapasowego). Na przykład, jeśli nazwiesz SKU, który jest produktem w pakiecie, otrzymasz prosty produkt, tablicę opcji produktu, tablicę linków do produktów, adresy URL mediów i obiekt magazynowy *. To samo, gdy używasz interfejsu API wyszukiwania (wkrótce nazwiemy go filtrem).

-Głaskanie pod brodę

Głaskanie pod brodę
źródło
API V1 / products nie zawiera parametru category_id? Czy można to obejść?
nr5