Estoy creando una API REST que permite inserciones (POST, no idempotentes) y actualizaciones (PUT, idempotentes) para agregar / actualizar la base de datos a nuestra aplicación.
Me pregunto si hay estándares o mejores prácticas con respecto a qué datos enviamos al cliente en la respuesta para una operación POST (inserción). Necesitamos enviar al menos un valor de ID de registro (por ejemplo, su nuevo registro es el registro # 1234).
¿Deberíamos responder con el objeto completo? (por ejemplo, esencialmente la misma respuesta que obtendrían de una solicitud "GET / object_type / 1234")
¿Deberíamos responder solo con el nuevo valor de ID? (por ejemplo, "{id: 1234}", lo que significa que si desean obtener el registro completo deben hacer una solicitud HTTP GET adicional para obtener el registro completo)
¿Un encabezado de redireccionamiento que los apunte a la URL del objeto completo?
Algo más por completo?
Respuestas:
Bueno, en una interfaz REST, siguiendo HTTP siempre que sea posible, devolvería un 201 y un URI en el campo de encabezado Ubicación al Recurso recién creado. Esto es lo que dice las definiciones de código de estado :
Si algo salió mal, diría que no debe regresar
-1
como otros han dicho, sino simplemente un Código de error de cliente o servidor (4xx o 5xx). Por ejemplo, si a un usuario no se le permite crear algún recurso nuevo, simplemente devolvería un "401 no autorizado", nada más y nada menos.fuente