En la especificación JSend, ¿cuál es la diferencia entre un error y un error?

votos
0

De acuerdo con https://labs.omniti.com/labs/jsend ,

  • Falla: Cuando se rechaza una llamada a la API debido a los datos no válidos o condiciones de llamada
  • Error: Cuando una llamada API falla debido a un error en el servidor

¿Puede esto ser interpretado como 4xx errores (como un 404) siempre debe devolver una falla, pero 5xx errores siempre se corresponde a un error?

Publicado el 07/11/2018 a las 20:43
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Esta es una gran pregunta y voy a responder con un ejemplo concreto de mi propia experiencia. En una API para uno de mis proyectos, permito que la carga de una hoja de cálculo Excel, que se procesa y el JSON resultante se almacena en el servidor.

Si hay un error al guardar los datos en el disco, entonces yo respondo con un "error" JSend junto con el mensaje de error apropiado ya que los datos deben han podido ser salvados.

Si, por el contrario, los datos en una de las filas no es válido (tal vez un tipo de datos incorrecto o un error en la distancia), entonces sé la fila exacta (o filas) de la hoja de cálculo que no son correctos. En este caso, un "no" respuesta apropiada es como la datapropiedad de la respuesta JSend contendrá una lista de todas las filas (el número de fila y el mensaje de error) para cada fila no procesable.

En el caso de una respuesta "error", no tendría esa capacidad, ya que se limitaría a una sola messagepropiedad. Pero con la respuesta "a prueba", tengo la datapropiedad disponible en el que puedo responder con una lista de grano fino de cuestiones.

Así, mientras que no hubo error , los datos en sí no era correcta y el usuario debe volver atrás y mirar su hoja de cálculo y solucionar los problemas identificados por la datapropiedad en la respuesta "a prueba".

Pensando en esto en términos de errores HTTP, aunque un ejercicio interesante, no siempre resulta en una asignación exacta (4xx = fallar, 5xx = errores). Se trata más de lo que se quiere comunicar al cliente: pasó algo malo que no debería haber sucedido ( "error") o el servidor está funcionando bien pero su datos no está del todo a la altura ( "a prueba").

Por último, si desea utilizar también los errores HTTP es totalmente de usted. Siempre se puede responder con un 200 y dejar que hable por JSend. Pero eso es una discusión un poco diferente (y algo religioso). :-)

Espero que eso ayude.

Respondida el 04/06/2019 a las 21:32
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more