servicios servicio example crear consumir consume json web-services rest

example - ¿Cuáles son las mejores prácticas para enviar respuestas de error en los servicios web JSON?



servicios rest java json (2)

¿Cuál es la mejor práctica con respecto al envío de respuestas de error en un servicio web JSON? Lo he visto de varias maneras y quería saber si había alguna norma acordada o mejores prácticas entre las opciones.

Lo he visto hecho donde la respuesta incluye indicación de éxito o falla, así como los datos que se devolverán o un mensaje de error adecuado, por ejemplo

[{''success'':true, ''data'':{...}] [{''success'':false, ''data'':{''message'':''error''}]

Pero también he visto ejemplos en los que el objeto JSON solo incluye datos, y el servicio usa los códigos de error HTTP normales para indicar un problema (403, 404, 500, etc.). (Así es como lo hace la API de Twitter).

¿Hay una manera "correcta" de hacer esto, o es solo una cuestión de estilo? ¿El último método es más "RESTful"?


En un enfoque "RESTful", la respuesta de error primaria se indica mediante un código de estado apropiado (4xx / 5xx).

Su mensaje debe proporcionar sugerencias adicionales específicas de la aplicación sobre cómo recuperarse del error. Esto puede incluir representaciones legibles por humanos del error que ha ocurrido o algún tipo de indicador más técnico (es decir, que proporciona un nombre de clase de Excepción).

Por ser genérico, mantenga una sintaxis de corrección para sus mensajes de error. Esto le permite introducir nuevos mensajes de error sin romper los clientes.


Use los códigos HTTP apropiados y ponga lo que ahora llama "datos" como el cuerpo de la respuesta. Esta es la única forma CORRECTAMENTE RESTANTE de avisar a los usuarios de API de un error.

El solo hecho de hacer esto no hará que su API sea RESTful, pero no hacerlo seguramente hará que su API no sea RESTful.

Un ejemplo de códigos de estado HTTP bien utilizados para errores está en la referencia de la API de Dropbox , eche un vistazo a las secciones de "Errores" debajo de cada método, ellos le explican qué códigos de error debe esperar y cuál es el significado asociado en ese método en particular.