Kilka serwerów, z którymi miałem do czynienia, zwróci HTTP 200 dla żądań, które klient powinien rozważyć jako błąd, z czymś w rodzaju „sukces: fałsz” w treści.
Nie wydaje mi się to prawidłową implementacją kodów HTTP, szczególnie w przypadku nieudanego uwierzytelnienia. Przeczytałem kody błędów HTTP dość zwięźle podsumowane, ponieważ „4xx” oznacza, że żądanie nie powinno zostać wykonane ponownie, dopóki nie zostanie zmienione, a „5xx” oznacza, że żądanie może być lub może nie być prawidłowe i może zostać ponowione, ale nie powiodło się. W tym przypadku 200: logowanie nie powiodło się lub 200: nie można znaleźć tego pliku lub 200: brak parametru x, zdecydowanie wydaje się nieprawidłowy.
Z drugiej strony widziałem argument, że „4xx” powinien wskazywać jedynie na problem strukturalny z żądaniem. Warto więc zwrócić 200: zły użytkownik / hasło zamiast 401 nieautoryzowanych, ponieważ klient może złożyć żądanie, ale zdarza się, że jest niepoprawny. Argument ten można podsumować, ponieważ jeśli serwer byłby w stanie przetworzyć żądanie i w ogóle ustalić, kod odpowiedzi powinien wynosić 200, a to od klienta zależy sprawdzenie treści w celu uzyskania dalszych informacji.
Zasadniczo wydaje się to być kwestią preferencji. Ale to nie jest satysfakcjonujące, więc jeśli ktoś ma powód, dla którego któryś z tych paradygmatów jest bardziej poprawny, chciałbym wiedzieć.
success: false
oznacza, że żądanie nie powiodło się i wiesz o tym. To powinno być 500. Coś w rodzaju złej nazwy użytkownika / hasła to 401. To nie jest takie dwuznaczne.