REST API更新产品HTTP方法是PUT还是POST?


Answers:


5

POST和PUT路由到相同的方法保存,但是使用POST时无法通过 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
好的,这是可以理解的,但是为什么文档会说PUT也可以创建产品?我的意思是路径中的sku总是用于识别产品,不是吗?还是可以使用PUT / V1 / products /:sku实际创建产品?
Patrik Lundgren

您应该使用Post进行创建,而Put进行更新操作。文档是从dockblock自动生成的,这就是为什么放置和发布具有相同描述的原因
KAndy

1

它是magento 1.x的文档
KAndy

抱歉,我应该在文本中写到这与Magento 2有关,该页面有关v1。
Patrik Lundgren

很抱歉,没有读到KAndy已经指出了这一点:-)关于stackexchange,我是一个完整的初学者
Patrik Lundgren

1
好吧,无论主要的magento版本如何,其余的API都具有相同的版本,不是吗?因此,指出这一点有一些用处。
hakre

1

我遇到了类似的问题,但是在我的情况下,PUT无法正常工作,因为:

1)找到购物车的所有产品:

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

(我还不知道如何找到客户端cartId)我通过从1开始增加数字来找到正确的数字。

2)答案是:

[ { "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)通过以下方式更新购物车价格:

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

3)我的购物车中没有更新的商品价格(我的回答与第1点相同)。我还必须说,我可以从购物车中删除商品。有什么解决办法吗?

谢谢

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.