Estou criando uma API REST que permite inserções (POST, não idempotent) e atualizações (PUT, idempotent) para adicionar / atualizar banco de dados em nosso aplicativo.
Gostaria de saber se existem padrões ou práticas recomendadas em relação aos dados que enviamos de volta ao cliente na resposta para uma operação POST (inserção). Precisamos enviar de volta pelo menos um valor de ID de registro (por exemplo, seu novo registro é o registro 1234).
Devemos responder com o objeto completo? (por exemplo, essencialmente a mesma resposta que eles receberiam de uma solicitação "GET / object_type / 1234")
Devemos responder apenas com o novo valor de ID? (por exemplo, "{id: 1234}", o que significa que, se eles querem buscar o registro inteiro, precisam fazer uma solicitação HTTP GET adicional para obter o registro completo)
Um cabeçalho de redirecionamento apontando-os para a URL do objeto completo?
Algo completamente diferente?
Respostas:
Bem, em uma interface REST, seguindo o HTTP sempre que possível, eu retornaria um 201 e um URI no campo de cabeçalho Location para o Recurso recém-criado. Aqui está o que as Definições de código de status dizem:
Se algo der errado, eu diria que você não deve retornar
-1
como outros já disseram, mas simplesmente um código de erro de cliente ou servidor (4xx ou 5xx). Por exemplo, se um usuário não tiver permissão para criar algum novo recurso, você simplesmente retornará um "401 Não Autorizado", nada mais e nada menos.fonte