Làm cách nào tôi có thể nhận danh sách sản phẩm với chi tiết của nó trong phần còn lại API Tôi trên magento2


9

Tôi đang làm việc trên ứng dụng di động gốc và muốn hiển thị sản phẩm sau khi khách hàng chọn một danh mục. Tôi có thể nhận danh sách sản phẩm theo danh mục trong yêu cầu nghỉ ngơi nhưng danh sách đó không có nhiều chi tiết về sản phẩm.

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

( 24 là ID danh mục )

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

Trước đó trong Magento 1.9danh sách sản phẩm là một cái gì đó như

{
2: {
thực thể: "2"
gõ_id: "đơn giản"
sku: "Túi Levis"
mô tả: "Túi"
short_description: "Bagpack"
meta_keyword: null
tên: "Túi Levis"
meta_title: null
meta_descrip: null
chính quy_price_with_tax: 45
chính quy_price_without_tax: 45
Final_price_with_tax: 45
Final_price_without_tax: 45
is_salizable: true
image_url: "http://172.16.8.24:8080/magento/media/catalog/product/cache / 0
} -

Tôi nên làm gì để có thêm thông tin về sản phẩm để tôi có thể hiển thị hình ảnh và những thứ khác trong ứng dụng di động?


làm thế nào để gọi API SOAP (ví dụ: API khách hàng)?
Manoj Kumar

Câu trả lời:


4

Có lẽ bạn có thể thử API GET / V1 / sản phẩm /: sku REST để có được tất cả các chi tiết ( https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/etc/webapi.xml # l36 )

Giá trị được trả về sẽ là đại diện của \ Magento \ Catalog \ Api \ Data \ ProductInterface (bao gồm các thuộc tính bổ sung) https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/Api/Data / ProducttInterface.php

Kiểm tra \ Magento \ Catalog \ Api \ ProductRep repositoryInterface :: nhận dịch vụ nào API GET / V1 / sản phẩm /: sku REST.

Bạn có thể thực hiện nhiều yêu cầu cho tất cả các SKU sản phẩm.

HOẶC LÀ

Bạn có thể sử dụng API tìm kiếm để tìm nạp toàn bộ danh sách trong một yêu cầu dựa trên tiêu chí của bạn:

ví dụ: http: //localhost/magento2/index.php/rest/V1/products? searchCriteria [filter_groups] [0] [bộ lọc] [0] [trường] = sku & searchCriteria [filter_groups] [0] [bộ lọc] [0] [value] = Simple & searchCriteria [filter_groups] [0] [filter] [1] [field] = sku & searchCriteria [filter_groups] [0] [filter] [1] [value] = Simple2 & searchCriteria [filter_groups] [0] [bộ lọc] ] [condition_type] = eq & searchCriteria [current_page] = 1 & searchCriteria [page_size] = 2

Trong trường hợp này, các sản phẩm có SKU - đơn giản và Simple2 đang được tìm kiếm.


làm thế nào để gọi API SOAP (ví dụ: API khách hàng)?
Manoj Kumar

@ManojKumar devdocs.magento.com/guides/v2.0/get-started/soap/ mẹo
airboss

chúng tôi đã thử nhưng tôi đánh vào điều này xin vui lòng xem chủ đề magento.stackexchange.com/questions/76569/iêu
Manoj Kumar

@airboss URL của hình ảnh trong 192.168.1.180/magento/index.php/rest/V1/products/SKU api không phải là một url đầy đủ .. nó giống như giá trị '{"property_code": "small_image", " ":" /6/4/64275-152378-large.jpg "}, '. Bạn có biết làm thế nào để có được tiền tố cho URL này không?
nr5

sử dụng dịch vụ storeConfigManager và lấy baseMediaUrl sau đó thêm đường dẫn mà bạn nhận được từ hình ảnh để đến với đường dẫn đầy đủ của bạn. Bạn cũng có thể sử dụng SecureMediaUrl cho url cơ sở an toàn. - Liên kết: devdocs.magento.com/swagger/index.html#!/ từ
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();
}

Tương tự, bạn có thể thay đổi $ requestUrl và lọc danh sách sản phẩm theo id danh mục và nhận chi tiết sản phẩm.

Vui lòng xác nhận xem nó có giải quyết được vấn đề của bạn hay không. Khác tôi sẽ đăng một giải pháp khác.


1

Ngoài những gì @airboss nói, chúng tôi đang làm việc theo kiểu API 'tích hợp' của chúng tôi. Đó là một lệnh gọi API có các thuộc tính mở rộng thêm vào nó (Danh mục, Bán hàng).

Trong một vài tuần, bạn sẽ có thể thực hiện cuộc gọi GET / V1 / sản phẩm /: sku REST API và nhận mọi thứ liên quan đến sản phẩm đó (nếu bạn được ủy quyền là khách hàng, bạn sẽ không thấy đối tượng kiểm kê). Ví dụ: nếu bạn gọi sku là sản phẩm đi kèm, bạn sẽ nhận được sản phẩm đơn giản, một loạt các tùy chọn sản phẩm, một mảng các liên kết sản phẩm, url phương tiện và đối tượng kiểm kê *. Điều tương tự khi bạn sử dụng tìm kiếm (chúng tôi sẽ sớm gọi nó là bộ lọc).

-Chọn


API V1 / sản phẩm không bao gồm tham số category_id? Có cách giải quyết nào không?
nr5
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.