API REST Cập nhật sản phẩm Phương thức HTTP PUT hoặc POST?


10

Tài liệu API REST nói rằng PUT /V1/products/{sku}tạo ra chứ không phải cập nhật.

Đó có phải là một lỗi trong các tài liệu bởi vì tôi sẽ cho rằng đó là một phương thức cập nhật và POST là phương thức để tạo?

Câu trả lời:


5

Tuyến đường POST và PUT đến cùng một phương thức lưu, nhưng với POST bạn không thể vượt qua sku

  <route url="/V1/products" method="POST">
        <service class="Magento\Catalog\Api\ProductRepositoryInterface" method="save"/>
        <resources>
            <resource ref="Magento_Catalog::products" />
        </resources>
    </route>
    <route url="/V1/products/:sku" method="PUT">
        <service class="Magento\Catalog\Api\ProductRepositoryInterface" method="save" />
        <resources>
            <resource ref="Magento_Catalog::products" />
        </resources>
    </route>

1
Ok đó là điều dễ hiểu nhưng tại sao các tài liệu lại nói rằng PUT cũng tạo ra một sản phẩm? Ý tôi là sku trong đường dẫn luôn là để xác định một sản phẩm phải không? Hoặc người ta có thể thực sự tạo ra sản phẩm bằng PUT / V1 / sản phẩm /: sku không?
Patrik Lundgren

Bạn nên sử dụng Post để tạo và Put cho hoạt động cập nhật. Tài liệu được tự động tạo từ dockblock, đây là lý do tại sao đặt và đăng có cùng mô tả
KAndy

1

Nhìn vào trang này: http://devdocs.magento.com/guides/m1x/api/rest/Resource/Sản phẩm / sản phẩm.html

Tôi có thể xem PUT:

Mô tả: Cho phép bạn cập nhật một sản phẩm hiện có.


Đó là tài liệu cho magento 1.x
KAndy

Xin lỗi tôi nên đã viết trong văn bản rằng điều này liên quan đến Magento 2, trang đó là về v1.
Patrik Lundgren

Và xin lỗi vì đã không đọc rằng KAndy đã chỉ ra điều này :-) Tôi là người mới bắt đầu hoàn toàn khi nói đến stackexchange
Patrik Lundgren

1
Chà, bất kể phiên bản magento chính, API còn lại có cùng phiên bản không? Vì vậy, có một số sử dụng trong việc chỉ ra điều này.
hakre

1

Tôi đã gặp một vấn đề tương tự nhưng trong trường hợp của tôi, PUT không hoạt động đúng bởi vì:

1) FInd tất cả các sản phẩm của giỏ hàng:

GET: http://my_host.dev/index.php/rest/V1/carts/8/items

(Tôi chưa biết cách tìm cartId của khách hàng ) Tôi đã tìm đúng số bằng cách tăng số từ 1.

2) câu trả lời là:

[ { "item_id": 11, "sku": "MH07-M-Green", "qty": 1, "name": "Hero Hoodie", "price": 54, "product_type": "configurable", "quote_id": "8", "product_option":{ "extension_attributes":{ "configurable_item_options":[{"option_id": "90", "option_value": 53 }, {"option_id": "138",…] } } } ]

2) Cập nhật giá mặt hàng giỏ hàng bằng cách:

{ "cartItem": { "itemId": 11, "sku": "MH07-M-Green", "qty": 2, "name": "Hero Hoodie", "price": 1000, "productType": "configurable ", "quoteId": "8" } }

3) Tôi không nhận được giá vật phẩm cập nhật trong giỏ hàng (Phản hồi của tôi giống như ở điểm 1). Tôi cũng phải nói rằng tôi có thể xóa các mục từ giỏ hàng. Bất kỳ giải pháp cho điều này?

Cảm ơn bạn

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.