Metodo PUT o POST dell'aggiornamento HTTP del prodotto di aggiornamento API REST?


10

La documentazione dell'API REST dice che PUT /V1/products/{sku}crea piuttosto che aggiornamenti.

È un errore nei documenti perché avrei supposto che fosse un metodo di aggiornamento e che POST fosse il metodo da creare?

Risposte:


5

POST e PUT indirizzano allo stesso metodo di salvataggio, ma con POST non è possibile passare 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, questo è comprensibile, ma perché i documenti dovrebbero dire che il PUT crea anche un prodotto? Voglio dire, lo sku nel percorso serve sempre per identificare un prodotto, no? Oppure si può effettivamente creare un prodotto usando PUT / V1 / products /: sku anche?
Patrik Lundgren,

È necessario utilizzare Pubblica per creare e Put per l'aggiornamento. La documentazione è generata automaticamente da dockblock, ecco perché put e post hanno la stessa descrizione
KAndy

1

Guardando questa pagina: http://devdocs.magento.com/guides/m1x/api/rest/Resources/Products/products.html#RESTAPI-Resource-Products-HTTPMethod-PUT-products--id

Posso vedere per PUT:

Descrizione: consente di aggiornare un prodotto esistente.


È documenti per magento 1.x
KAndy

Mi dispiace avrei dovuto scrivere nel testo che si trattava di Magento 2, quella pagina riguarda la v1.
Patrik Lundgren,

E scusami per non aver letto che KAndy lo aveva già sottolineato :-) Sono un principiante assoluto quando si tratta di stackexchange
Patrik Lundgren

1
Beh, indipendentemente dalla versione principale di Magento, l'API di riposo ha la stessa versione, vero? Quindi è utile indicarlo.
Hacre,

1

Ho un problema simile ma nel mio caso PUT non funziona correttamente perché:

1) Trova tutti i prodotti del carrello:

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

(Non so ancora come trovare il client carrelloId ) Ho trovato il numero corretto aumentando il numero da 1.

2) la risposta è stata:

[ { "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) Aggiorna il prezzo dell'articolo carrello con:

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

3) Non ottengo il prezzo dell'articolo aggiornato nel carrello (La mia risposta è la stessa del punto 1). Devo anche dire che posso eliminare gli articoli dal carrello. Qualche soluzione per questo?

Grazie

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.