magento2에있는 rest API에 세부 정보가있는 제품 목록을 얻는 방법


9

기본 모바일 애플리케이션을 개발 중이며 고객이 카테고리를 선택한 후 제품을 표시하려고합니다. 휴면 요청에서 카테고리별로 제품 목록을 얻을 수 있지만 해당 목록에 제품에 대한 세부 정보가 없습니다.

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

( 24는 카테고리 ID )

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

Magento 1.9제품 목록의 이전 은 다음과 같습니다.

{
2 : {
entity_id : "2"
type_id : "단순"
sku : "레비 스 백팩"
설명 : "가방"
short_description : "가방"
meta_keyword : null
이름 : "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"
}-

제품에 대한 자세한 정보를 얻으려면 어떻게해야합니까? 모바일 앱에서 이미지 및 기타 정보를 표시 할 수 있습니까?


SOAP API를 호출하는 방법 (예 : 고객 API)?
Manoj Kumar

답변:


4

어쩌면 GET / V1 / products / : sku REST API를 사용하여 모든 세부 정보를 얻을 수 있습니다 ( https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/etc/webapi.xml # l36 )

리턴 된 값은 \ Magento \ Catalog \ Api \ Data \ ProductInterface (추가 속성 포함)를 나타냅니다. https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/Api/Data /ProductInterface.php

GET / V1 / products / : sku REST API를 서비스하는 \ Magento \ Catalog \ Api \ ProductRepositoryInterface :: get을 확인하십시오.

모든 제품 SKU에 대해 여러 요청을 할 수 있습니다.

또는

검색 API를 사용하여 기준에 따라 단일 요청으로 전체 목록을 가져올 수 있습니다.

예 : http : //localhost/magento2/index.php/rest/V1/products? searchCriteria [filter_groups] [0] [필터] [0] [field] = sku & searchCriteria [filter_groups] [0] [필터] [0] [값] = 단순 & 검색 기준 [필터 그룹] [0] [필터] [1] [필드] = sku & searchCriteria [필터 그룹] [0] [필터] [1] [값] = 단순 2 & 검색 기준 [필터 그룹] [0] [필터] [0 ] [condition_type] = eq & searchCriteria [current_page] = 1 & searchCriteria [page_size] = 2

이 경우 SKU가있는 제품 (Simple 및 Simple2)이 검색됩니다.


SOAP API를 호출하는 방법 (예 : 고객 API)?
Manoj Kumar


우리는 시도했지만 나는 이것에 타격 mthreado.stackexchange.com/questions/76569/…
Manoj Kumar

@airboss 192.168.1.180/magento/index.php/rest/V1/products/SKU API 의 이미지 URL은 전체 URL이 아닙니다. '{ "attribute_code": "small_image", "value ":"/6/4/64275-152378-large.jpg "}, '. 이 URL의 접두사를 얻는 방법을 알고 있습니까?
nr5

storeConfigManager 서비스를 사용하고 baseMediaUrl을 가져온 다음 이미지에서 얻은 경로를 추가하여 전체 경로를 찾으십시오. 보안 기본 URL에 secureMediaUrl을 사용할 수도 있습니다. -링크 : 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();
}

마찬가지로 $ requestUrl을 변경하고 카테고리 ID별로 제품 목록을 필터링하고 제품 세부 사항을 얻을 수 있습니다.

문제가 해결되는지 확인하십시오. 그렇지 않으면 다른 솔루션을 게시 할 것입니다.


1

@airboss가 말한 것 외에도 우리는 '통합'스타일의 API를 연구하고 있습니다. 확장 가능한 속성이 추가 된 API 호출입니다 (Catalog, Sales).

몇 주 안에 GET / V1 / products / : sku REST API 호출을 수행하고 해당 제품과 관련된 모든 것을 얻을 수 있어야합니다 (고객 권한이있는 경우 인벤토리 오브젝트가 표시되지 않음). 예를 들어 번들 제품인 sku를 호출하면 간단한 제품, 제품 옵션 배열, 제품 링크 배열, 미디어 URL 및 인벤토리 개체 *를 얻게됩니다. 검색 API를 사용할 때도 마찬가지입니다. 곧 필터라고합니다.

-척


V1 / products API에 category_id 매개 변수가 포함되어 있지 않습니까? 그 해결 방법은 무엇입니까?
nr5
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.