2010-03-22 22 views
10

Estoy implementando un servicio web que devuelve una carga útil codificada en JSON. Si la llamada al servicio falla, digamos, debido a parámetros no válidos, se devuelve un error codificado en JSON. No estoy seguro, sin embargo, qué código de estado HTTP debería devolverse en esa situación.¿Usa códigos de estado HTTP para reflejar el éxito/falla de la solicitud del servicio web?

Por un lado, parece que los códigos de estado HTTP son para HTTP: a pesar de que se devuelve un error de aplicación, la transferencia HTTP sí tuvo éxito, lo que sugiere una respuesta OK 200 .

Por otro lado, un enfoque REST parece sugerir que si la persona que llama está tratando de colocar a un recurso, y los parámetros de la solicitud JSON no son válidos alguna manera, que un 400 Bad Request es apropiado.

estoy usando Prototype en el lado del cliente, que tiene un buen mecanismo para despachar automáticamente a diferentes devoluciones de llamada basado en el código de estado HTTP (onSuccess y onFailure), así que estoy tentado a usar los códigos de estado de indicar el éxito o el fracaso del servicio, pero me gustaría saber si alguien tiene opiniones o experiencia con prácticas comunes en este asunto.

Gracias!

Respuesta

13

código de estado http son solo para indicar el estado de la respuesta de la aplicación. y como dijiste, si los parámetros json no son válidos, un código de estado 400 es una respuesta adecuada.

así que sí, es una muy buena idea usar el código de estado http. de plus, el código de estado es fácil de entender, ya que no cambia de una aplicación (servicios web) a otra

3

Definitivamente debe utilizar los códigos de estado adecuados, ya que son exactamente para este propósito, no para indicar el estado de la solicitud HTTP en sí. De esta forma, puede redirigir la respuesta a la función/bifurcación apropiada antes de analizarla, lo que dará lugar a un código mucho más ordenado en el lado del cliente.

Cuestiones relacionadas