restful - Código de estado HTTP para "no hay datos disponibles" de un origen de datos externo
rest api (2)
Guión:
Se envía una solicitud POST
para procesar un pedido que dará como resultado la recuperación de datos desde una fuente de datos externa.
Hay tres resultados posibles:
- La fuente de datos devolvió datos para la solicitud
- No hubo datos disponibles para la solicitud (esto se ve como un error)
- No se pudo acceder a la fuente de datos (puede estar fuera de servicio por mantenimiento)
Una respuesta obvia para 1 es 200: OK
o 201: Created
(se crea una entidad a partir de esta solicitud).
¿Qué códigos de estado serían apropiados para 2 y 3 ?
Códigos de estado que he considerado:
-
503: Service Unavailable
cuando la fuente de datos está inactiva -
500: Internal Server Error
cuando la fuente de datos está inactiva -
502: Bad Gateway
cuando "no hay datos disponibles" -
404: Not Found
cuando "no hay datos disponibles" -
403: Forbidden
cuando "no hay datos disponibles" -
412: Precondition Failed
cuando "no hay datos disponibles"
2) Mirando hacia atrás, estoy de acuerdo en que probablemente debería ser un 204 No Content o quizás un 200 con un cuerpo que indique que no se pueden encontrar registros o recursos dependiendo de la estructura devuelta. Los 404 se usan generalmente cuando el URI del recurso no existe o un recurso en el URI no se encuentra en el caso de un servicio de descanso.
3) Servicio 503 no disponible
El servidor actualmente no puede manejar la solicitud debido a una sobrecarga temporal o al mantenimiento del servidor. La implicación es que esta es una condición temporal que se aliviará después de algún retraso. Si se conoce, la duración del retraso PUEDE indicarse en un encabezado Reintentar después. Si no se da ningún Reintento después, el cliente DEBE manejar la respuesta como lo haría para una respuesta 500.
Note: The existence of the 503 status code does not imply that a
server must use it when becoming overloaded. Some servers may wish
to simply refuse the connection.
3) Estoy de acuerdo con 503 para esto
2) Francamente, creo que se podría hacer un buen argumento para usar 204 en el caso 2. Puede incluir metainfo en el encabezado para indicar específicamente qué "salió mal". Realmente depende de cuánto considere este caso como ''un error'' en el nivel de API.
Si la API funciona como estaba previsto, y la solicitud fue realizada a un punto final válido, por un usuario autorizado y autenticado y no causó un mal funcionamiento del servidor, entonces muy pocos de los errores de las series 400 o 500 realmente parecen aplicarse.
por ejemplo, 404 usualmente significa que el URI al que llamaste no existe, si existe, entonces usar ese código es engañoso al menos IMHO
**10.2.5 204 No Content**
El servidor ha cumplido la solicitud pero no necesita devolver un cuerpo de entidad, y puede querer devolver información actualizada. La respuesta PUEDE incluir metainformación nueva o actualizada en forma de encabezados de entidad, que si están presentes DEBEN asociarse con la variante solicitada.
Si el cliente es un agente de usuario, NO DEBE cambiar su vista de documento de la que causó el envío de la solicitud. Esta respuesta está destinada principalmente a permitir que se realicen acciones para que se realicen acciones sin que se produzca un cambio en la vista de documento activo del agente del usuario, aunque cualquier información nueva o actualizada DEBE aplicarse al documento que se encuentra actualmente en la vista activa del agente del usuario.
La respuesta 204 NO DEBE incluir un cuerpo de mensaje y, por lo tanto, siempre termina con la primera línea vacía después de los campos de encabezado.