Estoy diseñando un servicio web RESTful usando WebApi y me preguntaba qué respuestas HTTP y cuerpos de respuesta devolver al actualizar / crear objetos.
Por ejemplo, puedo usar el método POST para enviar algunos JSON al servicio web y luego crear un objeto. ¿Es una buena práctica establecer el estado HTTP en creado (201) o bien (200) y simplemente devolver un mensaje como "Nuevo empleado agregado", o devolver el objeto que se envió originalmente?
Lo mismo ocurre con el método PUT. ¿Qué estado HTTP es mejor usar y debo devolver el objeto que se creó o simplemente un mensaje? Teniendo en cuenta el hecho de que el usuario sabe qué objeto está tratando de crear / actualizar de todos modos.
¿Alguna idea?
Ejemplo:
Añadir nuevo empleado:
POST /api/employee HTTP/1.1
Host: localhost:8000
Content-Type: application/json
{
"Employee": {
"Name" : "Joe Bloggs",
"Department" : "Finance"
}
}
Actualizar empleado existente:
PUT /api/employee HTTP/1.1
Host: localhost:8000
Content-Type: application/json
{
"Employee": {
"Id" : 1
"Name" : "Joe Bloggs",
"Department" : "IT"
}
}
Respuestas:
Respuesta con objeto creado / actualizado
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"
}
}
Respuesta con solo mensaje:
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"
}
Respuesta con solo código de estado:
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. Es extremadamente útil, especialmente porque mantiene la presentación de nuevos datos y la solicitud de la versión actualizada atómica.