REST API Обновить продукт HTTP метод PUT или POST?


10

Документация REST API гласит, что PUT /V1/products/{sku}создает, а не обновляет.

Это ошибка в документации, потому что я бы предположил, что это метод обновления, а POST - метод для создания?

Ответы:


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?
Патрик Лундгрен

Вы должны использовать Post для создания и Put для обновления. Документация генерируется автоматически из док-блока, поэтому у put и post одинаковое описание
KAndy

1

Глядя на эту страницу: http://devdocs.magento.com/guides/m1x/api/rest/Resources/Products/products.html#RESTAPI-Resource-Products-HTTPMethod-PUT-products--id

Я вижу для PUT:

Описание: Позволяет обновить существующий продукт.


Это документы для magento 1.x
KAndy

Извините, я должен был написать в тексте, что это касается Magento 2, эта страница о v1.
Патрик Лундгрен

И извините за то, что не читали, что KAndy уже указывал на это :-) Я полный новичок, когда дело доходит до обмена стеками
Патрик Лундгрен

1
Ну, независимо от основной версии magento, остальные API имеют одну и ту же версию, не так ли? Так что в этом есть смысл.
17

1

У меня похожая проблема, но в моем случае PUT не работает должным образом, потому что:

1) найти все товары из корзины:

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

(Я пока не знаю, как найти клиентскую корзину ). Я нашел правильное число, увеличив его с 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). Я должен также сказать, что я могу удалить товары из корзины. Любое решение для этого?

Спасибо

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.