1
resposta

[Dúvida] Boas praticas RESTful p/ Batch - Update e Delete

Viva, A minha dúvida a seguir é sobre boas práticas em RESTful numa situação de atualização e remoção em batch.

Eu compreendo que é uma recomendação forte seguir as boas práticas do RESTful na identificação do recurso bem como o uso correto do verbo HTTP. Porém no geral, as recomendações são definidas apenas para um único recurso a ser atualizado e removido usando o /{id} no fim da URL.

Como ficaria isso em batch? Qual a melhor maneira, seguinto as boas recomendações de RESTful, de definir um endpoint para se remover vários tópicos?

Seria um verbo DELETE e uma url "/topicos" (sem {id}) passando um form no corpo da requisição de maneira a identificar os vários ids?

Ou seria o uso de uma URL alternativa, que nao tivesse relação com o recurso em si, mas um substantivo que representa +- do que se trata como por exemplo "/batches"?

1 resposta

Oi Diego,

Ótima pergunta!

Na verdade o modelo REST não foi pensado para lidar com esse cenário, de realizar operações em múltiplos recursos simultaneamente. Sendo assim, não existe uma forma padrão e recomendada de se implementar.

O que eu recomendaria é criar endpoints separados para lidar com operações batch, para não impactar nos endpoints já existentes que lidam com um único recurso por vez. Por exemplo:

POST /topicos/batch

[
  {
    "titulo": "Topico 1",
    "mensagem": "Mensagem 1",
    "cursoId": 8
  },
  {
    "titulo": "Topico 2",
    "mensagem": "Mensagem 2",
    "cursoId": 8
  },
  {
    "titulo": "Topico 3",
    "mensagem": "Mensagem 3",
    "cursoId": 3
  }
]
PUT /topicos/batch

[
  {
    "id": 3,
    "titulo": "Topico 1 put"
  },
  {
    "id": 7,
    "titulo": "Topico 2 put"
  },
  {
    "id": 61,
    "titulo": "Topico 3 put"
  }
]
DELETE /topicos/batch

[12, 14, 19, 22]

Bons estudos!