Em geral, você tem um ponto final que representa toda a coleção de x :
/products
Digamos, você deseja atualizar um único produto, faça um PUT para /products/{id}
. Se você deseja atualizar parcialmente um único produto (não atualizando todos os campos), também pode usar um PATCH para /products/{id}
. O mesmo vale para a exclusão de uma única entidade ( DELETE to /products/{id}
).
Se você deseja direcionar um único recurso, qualifica-se através do caminho, qual recurso único , que deseja modificar.
A única ação que interrompe o esquema é a criação de um recurso. Ao criar um recurso, você direciona a coleção como um todo, diga POST para /products
.
Dito isto, deve ficar claro que o destino das operações que afetam a coleção como um todo deve ir para o terminal de coleta apropriado.
Por exemplo, você deseja recuperar um subconjunto de produtos vermelho, solicita-o
GET para /products?colour=red
.
Portanto, se você deseja excluir todos esses itens , você DELETE/products?colour=red
. Ou, se você deseja excluir alguns dos produtos por meio de id
, DELETE /products?id=1&id=2&id=3
.
E a criação em massa de recursos? POSTAR sua coleção [{...},{...},{...}]
simplesmente para /products
. O mesmo vale para PUT e PATCH .
Isso é realmente simples.
Para responder suas perguntas:
Se eu precisar adicionar à coleção, posso aprovar apenas alguns produtos com PUT?
Não é apenas OK, você é incentivado a fazer assim.
Se eu precisar excluir alguns produtos da coleção, posso transmitir dados de filtro (uma matriz de IDs) com DELETE?
Está tudo bem. Como Eneko Alonso escreveu, algumas vezes existem operações em massa encapsuladas por pontos de extremidade "controlador", ou seja, um POST é usado para acionar operações (complexas).