Estou projetando um serviço Web RESTful usando WebApi e queria saber quais respostas HTTP e corpos de resposta devem retornar ao atualizar / criar objetos.
Por exemplo, eu posso usar o método POST para enviar algum JSON para o serviço da web e criar um objeto. É uma prática recomendada definir o status HTTP como criado (201) ou ok (200) e simplesmente retornar uma mensagem como "Novo funcionário adicionado" ou retornar o objeto que foi enviado originalmente?
O mesmo vale para o método PUT. Qual status HTTP é melhor usar e preciso retornar o objeto que foi criado ou apenas uma mensagem? Considerando o fato de que o usuário sabe qual objeto está tentando criar / atualizar de qualquer maneira.
Alguma ideia?
Exemplo:
Adicionar novo funcionário:
POST /api/employee HTTP/1.1
Host: localhost:8000
Content-Type: application/json
{
"Employee": {
"Name" : "Joe Bloggs",
"Department" : "Finance"
}
}
Atualizar funcionário existente:
PUT /api/employee HTTP/1.1
Host: localhost:8000
Content-Type: application/json
{
"Employee": {
"Id" : 1
"Name" : "Joe Bloggs",
"Department" : "IT"
}
}
Respostas:
Resposta com o objeto criado / atualizado
HTTP/1.1 201 Created
Content-Length: 39
Content-Type: application/json; charset=utf-8
Date: Mon, 28 Mar 2016 14:32:39 GMT
{
"Employee": {
"Id" : 1
"Name" : "Joe Bloggs",
"Department" : "IT"
}
}
Resposta com apenas uma mensagem:
HTTP/1.1 200 OK
Content-Length: 39
Content-Type: application/json; charset=utf-8
Date: Mon, 28 Mar 2016 14:32:39 GMT
{
"Message": "Employee updated"
}
Resposta com apenas código de status:
HTTP/1.1 204 No Content
Content-Length: 39
Date: Mon, 28 Mar 2016 14:32:39 GMT
UPDATE/INSERT ... RETURNING
variante Postgresql para SQL. É extremamente útil, especialmente porque mantém atômica a submissão de novos dados e a solicitação da versão atualizada.