REST API Update Product HTTP Method PUT or POST?


10

La documentation de l'API REST indique que PUT /V1/products/{sku}crée plutôt que met à jour.

Est-ce une erreur dans les documents parce que j'aurais supposé qu'il s'agit d'une méthode de mise à jour et que POST est la méthode à créer?

Réponses:


5

POST et PUT acheminent vers la même méthode, mais avec POST, vous ne pouvez pas passer 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
Ok c'est compréhensible mais pourquoi les docs diraient-ils que le PUT crée également un produit? Je veux dire que le sku sur le chemin est toujours pour identifier un produit n'est-ce pas? Ou peut-on réellement créer un produit en utilisant PUT / V1 / products /: sku également?
Patrik Lundgren

Vous devez utiliser Post pour créer et Put pour la mise à jour. La documentation est générée automatiquement à partir de dockblock, c'est pourquoi put et post ont la même description
KAndy

1

En regardant cette page: http://devdocs.magento.com/guides/m1x/api/rest/Resources/Products/products.html#RESTAPI-Resource-Products-HTTPMethod-PUT-products--id

Je peux voir pour PUT:

Description: vous permet de mettre à jour un produit existant.


Ce sont des documents pour magento 1.x
KAndy

Désolé, j'aurais dû écrire dans le texte qu'il s'agissait de Magento 2, cette page concerne la v1.
Patrik Lundgren

Et désolé de ne pas avoir lu que KAndy l'avait déjà souligné :-) Je suis un débutant complet en matière de stackexchange
Patrik Lundgren

1
Eh bien, quelle que soit la version principale de Magento, l'API restante a la même version, n'est-ce pas? Il est donc utile de le signaler.
hakre

1

J'ai un problème similaire mais dans mon cas, PUT ne fonctionne pas correctement car:

1) Trouvez tous les produits du chariot:

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

(Je ne sais pas encore comment trouver le client cartId ) J'ai trouvé le bon numéro en augmentant le nombre de 1.

2) la réponse était:

[ { "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) Mettre à jour le prix de l'article du panier en:

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

3) Je ne reçois pas le prix de l'article mis à jour dans le panier (ma réponse est la même qu'au point 1). Je dois également dire que je peux supprimer des articles du panier. Une solution pour ça?

Je vous remercie

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.