Какие HTTP статусы существуют и каково назначение 2xx, 3xx, 4xx, 5xx
2xx 3xx 4xx 5xxHTTPпротоколысетистатусы
Что проверяют
Знаете ли вы группы и различаете ли близкие коды внутри них.
Как отвечать
Первая цифра задаёт класс:
- 1xx информационные: промежуточные ответы.
101это переключение протокола, с него начинается WebSocket; - 2xx успех:
200успех с телом,201создано (с адресом нового ресурса в заголовкеLocation),202принято в обработку, но ещё не выполнено,204успех без тела (типично для удаления),206частичное содержимое при докачке; - 3xx перенаправление:
301постоянное,302и307временное,304не изменялось (ответ на условный запрос по метке версии, тела нет),308постоянное с сохранением метода; - 4xx ошибка клиента:
400некорректный запрос,401не аутентифицирован,403аутентифицирован, но нет прав,404не найдено,405метод не поддерживается,409конфликт состояния,415неподдерживаемый формат тела,422синтаксис верен, но данные не проходят по смыслу,429слишком много запросов; - 5xx ошибка сервера:
500внутренняя ошибка,502некорректный ответ от вышестоящего сервера,503сервис недоступен,504вышестоящий сервер не ответил вовремя.
Различия, которые чаще всего и спрашивают:
401против403: первый значит «не знаем, кто вы, авторизуйтесь», второй «знаем, но вам нельзя». Повторная попытка входа поможет только в первом случае;301против302: постоянное перенаправление кэшируется браузером надолго, и ошибочно выставленный код 301 потом невозможно откатить для тех, кто его уже получил;400против422: тело не разобралось против тела, которое разобралось, но не прошло проверку;502против504: сосед ответил чем-то непонятным против того, что не ответил вовсе. Для поиска причины это разные направления.
Полезное дополнение: с кодами 429 и 503 принято отдавать заголовок с указанием, когда повторить.
Где спотыкаются
Отдают 200 с признаком ошибки внутри тела.
Путают 401 и 403.
Ставят 301 вместо временного и потом не могут отменить.
Возвращают 500 на некорректный ввод пользователя.