REST API Update Produkt HTTP-Methode PUT oder POST?

10

In der REST-API-Dokumentation heißt es, dass PUT /V1/products/{sku}keine Updates erstellt werden.

Ist das ein Fehler in den Dokumenten, weil ich angenommen hätte, dass es sich um eine Aktualisierungsmethode handelt und POST die zu erstellende Methode ist?

Patrik Lundgren
quelle

Antworten:

5

POST und PUT werden zur gleichen Methode gespeichert, aber mit POST können Sie nicht übergeben 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
quelle
1
Ok, das ist verständlich, aber warum sollten die Dokumente sagen, dass der PUT auch ein Produkt erstellt? Ich meine, der Sku im Pfad dient immer dazu, ein Produkt zu identifizieren, nicht wahr? Oder kann man ein Produkt auch mit PUT / V1 / products /: sku erstellen?
Patrik Lundgren
Sie sollten Post zum Erstellen und Put zum Aktualisieren verwenden. Die Dokumentation wird automatisch vom Dockblock generiert. Aus diesem Grund haben Put und Post dieselbe Beschreibung
KAndy,
1

Auf dieser Seite finden Sie folgende Informationen : http://devdocs.magento.com/guides/m1x/api/rest/Resources/Products/products.html#RESTAPI-Resource-Products-HTTPMethod-PUT-products--id

Ich kann für PUT sehen:

Beschreibung: Ermöglicht das Aktualisieren eines vorhandenen Produkts.

Raphael beim digitalen Pianismus
quelle
Es ist docs für magento 1.x
KAndy
Entschuldigung, ich hätte in den Text schreiben sollen, dass dies Magento 2 betrifft, diese Seite handelt von v1.
Patrik Lundgren
Und es tut mir leid, dass ich nicht gelesen habe, dass KAndy bereits darauf hingewiesen hat :-) Ich bin ein absoluter Anfänger, wenn es um Stapelaustausch geht
Patrik Lundgren
1
Unabhängig von der Magento-Hauptversion hat die Rest-API dieselbe Version, nicht wahr? Es hat also Sinn, darauf hinzuweisen.
hakre
1

Ich habe ein ähnliches Problem, aber in meinem Fall funktioniert PUT nicht richtig, weil:

1) Finden Sie alle Produkte des Warenkorbs:

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

(Ich weiß noch nicht, wie ich die Client- CartId finde. ) Ich habe die richtige Nummer gefunden, indem ich die Nummer von 1 erhöht habe.

2) Die Antwort war:

[ { "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) Aktualisieren Sie den Preis des Warenkorbartikels um:

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

3) Ich erhalte keinen aktualisierten Artikelpreis im Warenkorb (Meine Antwort ist dieselbe wie in Punkt 1). Ich muss auch sagen, dass ich Artikel aus dem Warenkorb löschen kann. Irgendeine Lösung dafür?

Vielen Dank

Grunthor
quelle