2012-08-15 46 views
13

Estoy trabajando en una aplicación cliente y servidor y encontré un problema interesante. Estamos creando una API relajante y comunicándonos a los clientes con respuestas JSON. Al hacer un DELETE, estamos devolviendo un 200 OK con una respuesta en blanco. Nuestros clientes obtienen los 200 correctos, pero no logran analizar el JSON.JSON válido en la respuesta

Entendemos por completo el análisis fallido (no hay nada que analizar), pero teníamos una pregunta más importante. ¿Está enviando una respuesta en blanco a JSON válida, o deberíamos devolver {} o algo por el estilo? Gracias.

Respuesta

12

Desde el HTTP/1.1 definition en relación con el método Delete:

Una respuesta positiva debería ser 200 (OK) si la respuesta incluye una entidad que describe el estado, 202 (Aceptado) si la acción aún no ha sido promulgada, o 204 (Sin contenido) si la acción ha sido promulgada pero la respuesta no incluye una entidad.

lo tanto, si el servidor está eliminando el artículo inmediatamente, a continuación, las respuestas sugeridas serían:

  • 200 OK - volver algún tipo de código de estado (como un verdadero booleano o una cadena diciendo "éxito ")
  • 204 sin contenido - nada volver, y tiene su cliente mirar hacia fuera para esta respuesta y no intentar JSON análisis, mientras que aún sabiendo la solicitud se ha realizado correctamente
+3

Re: si una respuesta en blanco es "JSON válida" - La definición en [json.org] (http://json.org/) dice que un valor JSON puede ser "una cadena entre comillas dobles, o un número, o verdadero o falso o nulo, o un objeto o una matriz ". Entonces, a menos que haya alguna diferencia filosófica entre "JSON válido" y "un valor de JSON válido", entonces diría que una respuesta en blanco no es JSON válida. – cloudfeet

7

Simplemente haciendo una prueba rápida aquí: http://jsonlint.com/ revela que un espacio en blanco no es JSON válido, mientras que {} es JSON válido.

+0

Sí, he visto analizadores JSON de esa manera y en clientela. La pregunta que quiero saber es si una respuesta en blanco es un JSON válido (en el sentido del protocolo HTTP/JSON) o simplemente no se puede analizar. –