Кілька серверів, з якими я мав справу, повернуть HTTP 200 для запитів, які клієнт повинен вважати помилкою, з тілом як "успіх: помилка".
Мені це не здається належним впровадженням HTTP-кодів, особливо у випадках невдалої аутентифікації. Я прочитав коди помилок HTTP досить коротко підсумовані, оскільки "4xx" вказує на те, що запит не слід робити знову до зміни, тоді як "5xx" вказує на те, що запит може бути неправдивим і може бути повторним, але був невдалим. У цьому випадку 200: вхід не вдалося, або 200: не вдалося знайти цей файл, або 200: відсутній параметр x, безумовно, здається неправильним.
З іншого боку, я міг бачити аргумент, що "4xx" повинен вказувати лише на структурну проблему із запитом. Тож належним чином повернути 200: поганий користувач / пароль, а не 401 несанкціонований, оскільки клієнту дозволяється робити запит, але це трапляється неправильно. Цей аргумент можна узагальнити так, якби сервер зміг обробити запит і визначитись, код відповіді повинен бути 200, і клієнт повинен перевірити орган для отримання додаткової інформації.
В основному, це здається питанням уподобань. Але це незадовільно, тому, якщо у когось є причина, чому будь-яка з цих парадигм є більш правильною, я хотів би знати.
success: false
означає, що запит не вдався, і ви це знаєте. Це має бути 500. Щось на зразок вашого неправильного імені користувача / пароля було б 401. Це не так неоднозначно.