Comment puis-je obtenir la liste des produits avec ses détails dans l'API de repos Je suis sur magento2


9

Je travaille sur une application mobile native et je souhaite afficher le produit une fois que le client a sélectionné une catégorie. Je peux obtenir la liste du produit par catégorie dans la demande de repos, mais cette liste n'a pas beaucoup de détails sur le produit.

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

( 24 est l'ID de catégorie )

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

Plus tôt dans Magento 1.9la liste des produits était quelque chose comme

{
2: {
entity_id: "2"
type_id: "simple"
sku: "Levis Bagpack"
description: "Bagpack"
short_description: "Bagpack"
meta_keyword: null
nom: "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"
} -

Que dois-je faire pour obtenir plus d'informations sur le produit afin de pouvoir afficher l'image et d'autres éléments dans l'application mobile?


comment appeler l'API SOAP (exemple: API client)?
Manoj Kumar

Réponses:


4

Vous pouvez peut-être essayer l'API GET / V1 / products /: sku REST pour obtenir tous les détails ( https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/etc/webapi.xml # l36 )

La valeur renvoyée sera la représentation de \ Magento \ Catalog \ Api \ Data \ ProductInterface (y compris les attributs supplémentaires) https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/Api/Data /ProductInterface.php

Vérifiez \ Magento \ Catalog \ Api \ ProductRepositoryInterface :: obtenez quels services l'API REST GET / V1 / products /: sku.

Vous pouvez effectuer plusieurs demandes pour toutes les références produit.

OU

Vous pouvez utiliser l'API de recherche pour récupérer la liste entière en une seule demande en fonction de vos critères:

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

Dans ce cas, les produits avec SKU - simple et Simple2 sont recherchés.


comment appeler l'API SOAP (exemple: API client)?
Manoj Kumar


nous avons essayé mais je suis frappé sur ce sujet, veuillez consulter le fil magento.stackexchange.com/questions/76569/…
Manoj Kumar

@airboss l'URL de l'image dans l' API 192.168.1.180/magento/index.php/rest/V1/products/SKU n'est pas une URL complète .. c'est quelque chose comme ça '{"attribute_code": "small_image", "value" ":" /6/4/64275-152378-large.jpg "}, '. UNE idée de comment obtenir le préfixe de cette URL?
n ° 5

utilisez le service storeConfigManager et obtenez la baseMediaUrl puis ajoutez le chemin que vous obtenez à partir de l'image pour arriver à votre chemin complet. Vous pouvez également utiliser secureMediaUrl pour l'URL de base sécurisée. - Lien: 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();
}

De même, vous pouvez modifier $ requestUrl et filtrer la liste des produits par identifiant de catégorie et obtenir les détails du produit.

Veuillez confirmer s'il résout votre problème ou non. Sinon, je posterai une autre solution.


1

En plus de ce qu'a dit @airboss, nous travaillons sur notre style d'API «d'intégration». C'est un appel d'API auquel des attributs extensibles s'ajoutent (Catalogue, Ventes).

Dans quelques semaines, vous devriez pouvoir faire un appel GET / V1 / products /: sku REST API et obtenir tout ce qui concerne ce produit (si vous êtes autorisé en tant que client, vous ne verrez pas l'objet d'inventaire). Par exemple, si vous appelez un sku qui est un produit fourni, vous obtiendrez le produit simple, un tableau d'options de produits, un tableau de liens de produits, des URL de médias et l'objet d'inventaire *. Même chose lorsque vous utilisez la recherche (nous l'appellerons bientôt filtre).

-Mandrin


l'API V1 / produits n'inclut pas le paramètre category_id? N'importe quelle solution pour cela?
n ° 5
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.