rest - pagina - http status codes
Código de estado de respuesta para búsquedas en API REST (3)
Supongamos que tenemos la siguiente API:
GET /api/guests/{id}
GET /api/guests?name=dummy
¿Qué código de estado debo devolver cuando no haya criterios de coincidencia de invitados? Quiero decir que no hay invitados con nombre falso .
¿Debería ser 404
, 204
o 200
con una matriz vacía?
Volvería 200 con una matriz vacía ...
O a 204 (sin contenido)
A 404 es cuando no se encuentra un recurso . Su recurso en este caso es la colección de invitados ... que existe.
200 y lista vacía de artículos. Como se encuentra el recurso de invitado en general, pero no tiene elementos coincidentes para su consulta
El código de estado adecuado para cada situación
Considere las siguientes situaciones:
-
GET /api/guests?name=dummy
Es una operación que solicita una representación de una colección. Si ningún elemento coincide con los criterios de búsqueda, devuelva un código de estado 200
con una matriz vacía en el cuerpo de la respuesta, indicando que la solicitud fue recibida, entendida y aceptada con éxito por el servidor, y la colección en sí existe, pero la búsqueda no arrojó resultados.
-
GET /api/guests/{id}
Es una operación que solicita la representación de un solo recurso utilizando su identificador único. Si no se encontró ningún recurso, devuelve un error 404
, que indica que el servidor no encontró el recurso con ese identificador.
Más detalles
Eche un vistazo a las definiciones del código de estado en el RFC 7231 (que actualiza el antiguo RFC 2616 ). Está bastante claro:
El código de estado
200
(OK) indica que la solicitud ha tenido éxito . La carga útil enviada en una respuesta de 200 depende del método de solicitud. Para los métodos definidos por esta especificación, el significado pretendido de la carga útil se puede resumir como sigue:
GET
: una representación del recurso objetivo;
HEAD
: la misma representación que GET, pero sin los datos de representación;
POST
: una representación del estado de, o los resultados obtenidos de, la acción;
PUT
,DELETE
: una representación del estado de la acción;
OPTIONS
: una representación de las opciones de comunicación;
TRACE
: una representación del mensaje de solicitud recibido por el servidor final.[...]
El código de estado
204
(Sin contenido) indica que el servidor ha cumplido satisfactoriamente la solicitud y que no hay contenido adicional para enviar en el cuerpo de la carga de respuesta . Los metadatos en los campos de encabezado de respuesta se refieren al recurso de destino y su representación seleccionada después de aplicar la acción solicitada.[...]
El código de estado
404
(No encontrado) indica que el servidor de origen no encontró una representación actual para el recurso de destino o no está dispuesto a revelar que existe . Un código de estado404
no indica si esta falta de representación es temporal o permanente; el código de estado410
(Gone) es preferido sobre404
si el servidor de origen sabe, presumiblemente a través de algún medio configurable, que la condición es probable que sea permanente.[...]
Los códigos de estado HTTP están organizados en clases. Echa un vistazo a esto:
El código de clase de estado
2xx
(2xx
) indica que la solicitud del cliente se recibió, comprendió y aceptó correctamente .
La clase de código de estado
4xx
(Error de cliente) indica que el cliente parece haber cometido un error . Excepto cuando se responde a una solicitudHEAD
, el servidor DEBE enviar una representación que contenga una explicación de la situación de error, y si se trata de una condición temporal o permanente.[...]