Aktualizacja interfejsu API REST Produkt Metoda HTTP PUT czy POST?


10

Dokumentacja interfejsu API REST mówi, że PUT /V1/products/{sku}tworzy, a nie aktualizuje.

Czy to błąd w dokumentacji, ponieważ zakładam, że jest to metoda aktualizacji, a POST to metoda tworzenia?

Odpowiedzi:


5

Trasa POST i PUT do tej samej metody zapisu, ale z POST nie można przejść 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, to zrozumiałe, ale dlaczego doktorzy powiedzieliby, że PUT tworzy również produkt? Mam na myśli, że SKU na ścieżce zawsze służy do identyfikacji produktu, prawda? Czy można rzeczywiście stworzyć produkt za pomocą PUT / V1 / products /: sku?
Patrik Lundgren

Powinieneś użyć Post do operacji tworzenia i Put do aktualizacji. Dokumentacja jest generowana automatycznie z poziomu dokowania, dlatego umieszczanie i wysyłanie mają ten sam opis
KAndy,

1

Patrząc na tę stronę: http://devdocs.magento.com/guides/m1x/api/rest/Resources/Products/products.html#RESTAPI-Resource-Products-HTTPMethod-PUT-products--id

Widzę dla PUT:

Opis: Umożliwia aktualizację istniejącego produktu.


To jest dokumentacja dla Magento 1.x
KAndy

Przepraszam, że powinienem napisać w tekście, że chodziło o Magento 2, ta strona dotyczy v1.
Patrik Lundgren

I przepraszam, że nie przeczytałem, że KAndy już to zauważył :-) Jestem kompletnym początkującym, jeśli chodzi o wymianę stosów
Patrik Lundgren

1
Cóż, niezależnie od głównej wersji Magento, reszta API ma tę samą wersję, prawda? Warto więc to podkreślić.
hakre

1

Mam podobny problem, ale w moim przypadku PUT nie działa poprawnie, ponieważ:

1) Znajdź wszystkie produkty koszyka:

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

(Nie wiem jeszcze, jak znaleźć klienta cartId ) Znalazłem prawidłowy numer, zwiększając liczbę z 1.

2) odpowiedź brzmiała:

[ { "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) Zaktualizuj cenę produktu w koszyku o:

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

3) Nie dostaję zaktualizowanej ceny produktu w koszyku (Moja odpowiedź jest taka sama jak w punkcie 1). Muszę też powiedzieć, że mogę usunąć przedmioty z koszyka. Jakieś rozwiązanie tego?

Dziękuję Ci

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.