REST API Actualizar producto Método HTTP ¿PUT o POST?

10

La documentación de la API REST dice que PUT /V1/products/{sku}crea en lugar de actualizaciones.

¿Es eso un error en los documentos porque habría asumido que es un método de actualización y POST es el método para crear?

Patrik Lundgren
fuente

Respuestas:

5

POST y PUT ruta al mismo método de guardar, pero con POST no puede pasar 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>
Kandy
fuente
1
Ok, eso es comprensible, pero ¿por qué los documentos dicen que PUT también crea un producto? Quiero decir que el sku en el camino siempre es para identificar un producto, ¿no? ¿O se puede crear un producto usando PUT / V1 / products /: sku también?
Patrik Lundgren
Debe usar Publicar para crear y Poner para la operación de actualización. La documentación se genera automáticamente desde Dockblock, es por eso que poner y publicar tienen la misma descripción
KAndy
1

Mirando esta página: http://devdocs.magento.com/guides/m1x/api/rest/Resources/Products/products.html#RESTAPI-Resource-Products-HTTPMethod-PUT-products--id

Puedo ver para PUT:

Descripción: le permite actualizar un producto existente.

Raphael en Digital Pianism
fuente
Es docs para magento 1.x
KAndy
Lo siento, debería haber escrito en el texto que se trataba de Magento 2, esa página es sobre v1.
Patrik Lundgren
Y lo siento por no haber leído que KAndy ya había señalado esto :-) Soy un principiante completo cuando se trata de stackexchange
Patrik Lundgren
1
Bueno, independientemente de la versión principal de magento, el resto de la API tiene la misma versión, ¿no? Entonces, es útil señalar esto.
Hakre
1

Tengo un problema similar, pero en mi caso, PUT no funciona correctamente porque:

1) Encuentra todos los productos del carrito:

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

(Todavía no sé cómo encontrar el cliente cartId ) Encontré el número correcto aumentando el número de 1.

2) la respuesta fue:

[ { "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) Actualizar el precio del artículo del carrito por:

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

3) No recibo el precio del artículo actualizado en el carrito (Mi respuesta es la misma que en el punto 1). Tengo que decir también que puedo eliminar artículos del carrito. ¿Alguna solución para esto?

Gracias

Grunthor
fuente