Plusieurs serveurs auxquels j'ai eu affaire renverront HTTP 200 pour les demandes que le client devrait considérer comme un échec, avec quelque chose comme "succès: faux" dans le corps.
Cela ne me semble pas être une implémentation correcte des codes HTTP, en particulier en cas d'échec de l'authentification. J'ai lu succinctement les codes d'erreur HTTP comme suit: «4xx» indique que la demande ne doit pas être répétée tant qu'elle n'est pas modifiée, tandis que «5xx» indique que la demande peut être valide ou non et peut être réessayée, sans succès. Dans ce cas, 200: échec de la connexion, ou 200: impossible de trouver ce fichier, ou 200: paramètre manquant x, semble définitivement faux.
D'autre part, je pourrais voir l'argument avancé selon lequel «4xx» devrait uniquement indiquer un problème structurel avec la demande. Il est donc approprié de renvoyer 200: bad user / password (mauvais utilisateur / mot de passe) au lieu de 401 non autorisé, car le client est autorisé à effectuer la demande, mais elle s'avère incorrecte. Cet argument pourrait être résumé de la manière suivante: si le serveur était en mesure de traiter la demande et de prendre une décision, le code de réponse devait être 200 et le client devait consulter le corps pour plus d'informations.
Fondamentalement, cela semble être une question de préférence. Mais ce n'est pas satisfaisant, donc si quelqu'un a une raison pour laquelle l'un ou l'autre de ces paradigmes est plus correct, j'aimerais le savoir.
success: false
implique que la demande a échoué et que vous le savez. Cela devrait être un 500. Quelque chose comme votre mauvais nom d'utilisateur / mot de passe serait un 401. Ce n'est pas si ambigu.