Varios servidores con los que he tratado devolverán HTTP 200 para solicitudes que el cliente debería considerar un error, con algo como 'éxito: falso' en el cuerpo.
Esto no me parece una implementación adecuada de códigos HTTP, particularmente en casos de autenticación fallida. He leído los códigos de error HTTP resumidos de manera bastante sucinta, ya que '4xx' indica que la solicitud no se debe volver a hacer hasta que se modifique, mientras que '5xx' indica que la solicitud puede o no ser válida y se puede volver a intentar, pero no tuvo éxito. En este caso 200: error de inicio de sesión, o 200: no se pudo encontrar ese archivo, o 200: falta el parámetro x, definitivamente parece incorrecto.
Por otro lado, pude ver el argumento de que '4xx' solo debería indicar un problema estructural con la solicitud. Por lo tanto, es correcto devolver 200: usuario / contraseña incorrecta en lugar de 401 sin autorización porque el cliente puede realizar la solicitud, pero resulta ser incorrecta. Este argumento podría resumirse ya que, si el servidor pudo procesar la solicitud y tomar una determinación, el código de respuesta debería ser 200, y el cliente debe verificar el cuerpo para obtener más información.
Básicamente, esto parece ser una cuestión de preferencia. Pero eso no es satisfactorio, así que si alguien tiene una razón por la cual cualquiera de estos paradigmas es más correcto, me gustaría saberlo.
success: false
implica que la solicitud falló y lo sabes. Eso debería ser un 500. Algo así como su nombre de usuario / contraseña incorrectos sería un 401. Esto no es tan ambiguo.