REST API Güncelleme Ürün HTTP Yöntemi PUT veya POST?


10

REST API belgeleri, PUT /V1/products/{sku}güncellemeler yerine oluşturulduğunu söylüyor .

Bu bir güncelleme yöntemi ve POST oluşturmak için bir yöntem olduğunu kabul olurdu çünkü dokümanlar bir hata mı ?

Yanıtlar:


5

POST ve PUT aynı yöntemi kaydeder, ancak POST ile geçemezsiniz 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
Tamam bu anlaşılabilir bir şey ama dokümanlar neden PUT'un bir ürün oluşturduğunu söylüyor? Yani yoldaki sku her zaman bir ürünü tanımlamak içindir, değil mi? Ya da gerçekten PUT / V1 / products /: sku kullanarak ürün yaratabilir mi?
Patrik Lundgren

Güncelleme işlemi için oluşturma ve koyma işlemi için Post kullanmalısınız. Dokümanlar dockblock'tan otomatik olarak oluşturulur, bu yüzden koy ve gönder aynı açıklamaya sahiptir
KAndy

1

Bu sayfaya bakarak: http://devdocs.magento.com/guides/m1x/api/rest/Resources/Products/products.html#RESTAPI-Resource-Products-HTTPMethod-PUT-products--id

PUT için görebiliyorum:

Açıklama: Mevcut bir ürünü güncellemenizi sağlar.


Magento 1.x için dokümanlar
KAndy

Maalesef metinde bunun Magento 2 ile ilgili olduğunu yazmış olmalıydım, bu sayfa v1 hakkında.
Patrik Lundgren

Ve KAndy'nin bunu zaten işaret ettiğini okumadığım için üzgünüm :-) Stackexchange söz konusu olduğunda tam bir acemiyim
Patrik Lundgren

1
Büyük magento sürümü ne olursa olsun, geri kalan API aynı sürüme sahiptir, değil mi? Yani bunu belirtmenin bir yararı var.
hakre

1

Ben benzer bir sorun var ama benim durumumda PUT düzgün çalışmıyor çünkü:

1) Arabanın tüm ürünlerini bulun:

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

(Nasıl henüz müşteri cartId bulmak için bilmiyorum ) 1'den sayısını artırarak doğru numara buldum.

2) cevap:

[ { "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) Güncelleme sepeti ürün fiyat:

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

3) Sepetteki güncellenmiş ürün fiyatını almıyorum (Cevabım nokta 1'deki ile aynıdır). Ayrıca şunu söylemeliyim ki öğeleri alışveriş sepetinden silebilirim. Bunun için bir çözüm var mı?

teşekkür ederim

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.