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 також створює продукт? Я маю на увазі, що ску на шляху завжди призначений для виявлення товару, чи не так? Або можна реально створити продукт, використовуючи також PUT / V1 / products /: sku?
Патрік Лундгрен

Ви повинні використовувати Post для створення та Put для роботи з оновленнями. Документація автоматично згенерована з док-блоку, саме тому розміщення та публікація мають той самий опис
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.
Патрік Лундгрен

І вибачте за те, що не прочитав, що Кенді вже вказав на це :-) Я - початківець, коли йдеться про обмін stackexchange
Патрік Лундгрен

1
Ну незалежно від основної версії magento, решта API має таку ж версію, чи не так? Таким чином, є деяка користь у цьому.
хакре

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). Маю також сказати, що я можу видалити товари з кошика. Будь-яке рішення для цього?

Дякую

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.