standard restful possible error codigos codes code rest http-status-codes

restful - possible http status codes



Estado HTTP 424 o 500 para error en la dependencia externa (3)

Estoy tratando de crear un servicio que tenga 2 dependencias. Una de las dependencias se gestiona internamente, mientras que la segunda requiere una llamada de HTTP externa a una API de terceros. La secuencia requiere la actualización del recurso y luego ejecutar la llamada de salida http.

Entonces mi pregunta es, en el caso de una falla en el 2do paso, ¿cuál es el código de estado HTTP correcto para devolver?

¿Debería la respuesta ser 424 o 500 con un cuerpo del mensaje explicando el error encontrado?

  • 424: Error de método: indica que el método no se ejecutó en un recurso particular dentro de su alcance porque alguna parte de la ejecución del método falló, lo que provocó la interrupción de todo el método.
  • Error interno de servidor 500.

El error por el que está preguntando es uno que ha ocurrido dentro de las funciones internas del servicio, por lo que un rango de código de estado 5xx es la elección correcta. 503 Service Unavailable se ve perfecto para la situación que ha descrito.

Los códigos 5xx son para indicar al cliente que, aunque la solicitud fue correcta, el servidor ha tenido algún tipo de problema para cumplir con la solicitud. Por otro lado, los códigos 4xx se usan para decirle al cliente que ha hecho algo incorrecto (y que el servidor está bien, gracias). Las secciones 10.4 y 10.5 de la especificación HTTP 1.1 explican los diferentes propósitos de los códigos 4xx y 5xx.

El código de estado 424 se define en el estándar WebDAV y es para un caso en el que el cliente necesita cambiar lo que está haciendo: el servidor no tiene ningún problema aquí.


503 El servicio no disponible es apropiado si el problema es que el servidor espera ser aliviado (por ejemplo, si obtiene un 503 del servidor ascendente). 502 Bad Gateway se debe utilizar para errores desconocidos de un servidor en sentido ascendente, donde no se sabe cómo responder.


Como la segunda operación es una llamada de servicio externo, debe elegir 502 o 504 según las situaciones.

Citado de: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.3

10.5.3 502 Bad Gateway

El servidor, aunque actúa como puerta de enlace o proxy, recibió una respuesta no válida del servidor ascendente al que accedió al intentar completar la solicitud.

10.5.4 Servicio 503 no disponible

El servidor actualmente no puede manejar la solicitud debido a una sobrecarga temporal o mantenimiento del servidor. La implicación es que esta es una condición temporal que se aliviará después de un poco de retraso. Si se conoce, la duración de la demora PUEDE indicarse en un encabezado Retry-After. Si no se da Reintentar-Después, el cliente DEBERÍA manejar la respuesta como lo haría con una respuesta de 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.

10.5.5 504 Tiempo de espera de puerta de enlace

El servidor, mientras actuaba como puerta de enlace o proxy, no recibió una respuesta oportuna del servidor ascendente especificado por el URI (por ejemplo, HTTP, FTP, LDAP) u otro servidor auxiliar (por ejemplo, DNS) al que tenía que acceder para intentar completar la solicitud.

Note: Note to implementors: some deployed proxies are known to return 400 or 500 when DNS lookups time out.