De acordo com a "ideologia REST", o que deve estar no corpo da resposta para solicitações PUT / POST / DELETE?
E os códigos de retorno? É o
HTTP_OK
suficiente?Qual o motivo de tais convenções, se houver?
Eu encontrei um bom post descrevendo as diferenças POST / PUT: POST vs PUT Mas ainda não responde à minha pergunta.
rest
http
post
http-delete
tuxSlayer
fonte
fonte
No geral, as convenções são "pense como se você estivesse apenas entregando páginas da web".
Para um PUT, eu retornaria a mesma visão que você obteria se fizesse um GET imediatamente depois; isso resultaria em 200 (bem, supondo que a renderização tenha êxito, é claro). Para um POST, eu faria um redirecionamento para o recurso criado (supondo que você esteja fazendo uma operação de criação; caso contrário, basta retornar os resultados); o código para uma criação bem-sucedida é 201, que é realmente o único código HTTP para um redirecionamento que não está no intervalo 300.
Eu nunca fiquei feliz com o que um DELETE deve retornar (meu código atualmente produz um HTTP 204 e um corpo vazio nesse caso).
fonte
PUT
Retornar o pedido, a próxima página parece uma prática ruim, pois a atualização na página resultante fará com que o pedido seja executado novamente. Em vez disso, para mim, faz sentido redirecionar, supondo que você esteja lidando com solicitações síncronas.PUT
solicitação, fazendo com que os dados sejam revertidos. Por exemplo, se duas pessoas estão fazendo referência à mesma página, uma faz uma atualização e a outra faz uma atualização, se a primeira pessoa atualizar para ver o resultado, isso realmente fará com que as coisas sejam revertidas antes que a segunda pessoa faça suas mudanças.A criação de um recurso geralmente é mapeada para o POST e isso deve retornar o local do novo recurso; por exemplo, em um andaime do Rails, um CREATE será redirecionado para o SHOW do novo recurso criado. A mesma abordagem pode fazer sentido para a atualização (PUT), mas isso é menos uma convenção; uma atualização precisa apenas indicar sucesso. Uma exclusão provavelmente também precisa indicar sucesso também; se você deseja redirecionar, retornar a lista de recursos provavelmente faz mais sentido.
O sucesso pode ser indicado por HTTP_OK, sim.
A única regra rígida no que eu disse acima é que um CREATE deve retornar o local do novo recurso. Isso parece um acéfalo para mim; faz todo o sentido que o cliente precise acessar o novo item.
fonte
Pelo RFC7231, isso não importa e pode estar vazio
Como implementamos a solução baseada em padrão json api no projeto:
post / put: gera atributos de objeto como em get (filtro / relações de campo se aplica da mesma forma)
delete: os dados contêm apenas nulo (por representar o objeto ausente)
status para exclusão padrão: 200
fonte
Eu gosto de Alfonso Tienda responder do código de status HTTP para atualizar e excluir?
Aqui estão algumas dicas:
EXCLUIR
COLOCAR
fonte