Método HTTP do produto de atualização da API REST PUT ou POST?

10

A documentação da API REST diz que PUT /V1/products/{sku}cria, em vez de atualizações.

Isso é um erro nos documentos, porque eu teria assumido que é um método de atualização e POST sendo o método a ser criado?

Patrik Lundgren
fonte

Respostas:

5

Rota POST e PUT para o mesmo método salvar, mas com POST você não pode passar 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
fonte
1
Ok, isso é compreensível, mas por que os documentos dizem que o PUT também cria um produto? Quero dizer, o sku no caminho sempre é para identificar um produto, não é? Ou é possível criar um produto usando PUT / V1 / products /: sku também?
Patrik Lundgren
Você deve usar Post para criar e colocar para operação de atualização. A documentação é gerada automaticamente a partir do dockblock, é por isso que colocar e postar têm a mesma descrição
KAndy
1

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

Eu posso ver por PUT:

Descrição: permite atualizar um produto existente.

Raphael na Digital Pianism
fonte
É docs para magento 1.x
KAndy 16/01
Desculpe, eu deveria ter escrito no texto que isso era referente ao Magento 2, essa página é sobre a v1.
Patrik Lundgren
E desculpe por não ler que KAndy já havia apontado isso :-) Eu sou um novato completo no que diz respeito à troca de pilhas
Patrik Lundgren
1
Bem, independentemente da versão principal do magento, a API restante tem a mesma versão, não é? Portanto, há alguma utilidade em apontar isso.
hakre 22/02
1

Eu tenho um problema semelhante, mas no meu caso, o PUT não funciona corretamente porque:

1) Encontre todos os produtos do carrinho:

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

(Ainda não sei como encontrar o cliente cartId ) Encontrei o número correto aumentando o número de 1.

2) a resposta foi:

[ { "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) Atualize o preço do item do carrinho de compras por:

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

3) Não recebo o preço do item atualizado no carrinho (minha resposta é a mesma do ponto 1). Devo dizer também que posso excluir itens do carrinho. Alguma solução para isso?

Obrigado

Grunthor
fonte