Какие основные классы HTTP статус-кодов вы знаете?

Ответ

HTTP статус-коды — это трехзначные числа, которые сервер возвращает в ответ на клиентский запрос. Они сгруппированы в пять классов по первой цифре.

Класс Описание Ключевые примеры
1xx (Информационные) Запрос получен, процесс продолжается. 100 Continue — сервер готов принять тело запроса.
2xx (Успешные) Запрос успешно обработан. 200 OK — стандартный ответ для успешных запросов.
201 Created — ресурс создан (часто после POST).
204 No Content — успешно, но тело ответа отсутствует.
3xx (Перенаправления) Для завершения запроса требуются дальнейшие действия (часто — редирект). 301 Moved Permanently — ресурс навсегда перемещен по новому URL.
302 Found — ресурс временно доступен по другому адресу.
4xx (Ошибки клиента) Ошибка на стороне клиента (неверный запрос). 400 Bad Request — сервер не понял запрос из-за неверного синтаксиса.
401 Unauthorized — требуется аутентификация.
403 Forbidden — доступ запрещен (нет прав).
404 Not Found — ресурс не найден.
5xx (Ошибки сервера) Сервер не смог выполнить корректный запрос. 500 Internal Server Error — общая ошибка сервера.
502 Bad Gateway — сервер, выступая в роли шлюза, получил недопустимый ответ.
503 Service Unavailable — сервер временно перегружен или на обслуживании.

Пример проверки в автотесте (Python + requests):

import requests

response = requests.get('https://api.example.com/users')
# Проверяем, что запрос успешен
assert response.status_code == 200, f'Ожидался статус 200, получен {response.status_code}'
# Или проверяем на успешный класс кодов (2xx)
assert response.ok == True

Ответ 18+ 🔞

А, слушай, про эти цифры, которые сервер тебе в ответ плюёт! HTTP статус-коды, блядь. Трёхзначные такие циферки, которые как крик души сервера: «Всё окей, иди нахуй» или «Сам иди нахуй, я сломался».

Вот смотри, они по первой цифре на пять бандитских группировок делятся.

Класс Что означает, простыми словами Самые яркие представители
1xx (Информационные) «Я твой запрос получил, не дёргай меня, ща думаю...» 100 Continue — типа, «давай дальше шли, я готов принять твоё тело запроса, не стесняйся».
2xx (Успешные) «Всё заебись, братан, сделал, что просил!» 200 OK — классика, «всё чётко, держи ответ».
201 Created — «создал твою хуйню, вот тебе ссылочка» (обычно после POST).
204 No Content — «сделал, но тебе нихуя не скажу, сам догадайся».
3xx (Перенаправления) «Не здесь ищи, дурачок, иди туда...» 301 Moved Permanently — «ресурс съехал навсегда, запомни новый адрес, балда».
302 Found — «он щас в другом месте, но это временно, не заливай».
4xx (Ошибки клиента) Вот тут внимание! Это твои косяки, ебанат. Сервер умный, а ты — нет. 400 Bad Request — «что за хуйню ты мне прислал? Я даже разобрать не могу».
401 Unauthorized — «предъяви пропуск, аноним».
403 Forbidden — «пропуск есть, но в этот кабинет тебе низя, пошёл вон».
404 Not Found — легенда! «То, что ты ищешь, я ебал в рот, его тут нет и не было».
5xx (Ошибки сервера) А вот это уже наши, серверные, позорные пиздецы. Мы обосрались, сорян. 500 Internal Server Error — «ой, всё! У меня внутри что-то сломалось, сам в шоке».
502 Bad Gateway — «я спросил у соседа, а он мне какую-то дичь ответил, я пас».
503 Service Unavailable — «всех заебал, перегружен, иди погуляй, щас не могу».

Ну и как это в коде проверить, чтоб не выглядеть идиотом:

import requests

response = requests.get('https://api.example.com/users')
# Тупо сравниваем с ожидаемым счастьем
assert response.status_code == 200, f'Ожидался статус 200, получен {response.status_code}'
# Или по-пацански: если код 2xx, то всё ок
assert response.ok == True

Вот и вся магия, ёпта. Запомни главное: 4xx — ты мудак, 5xx — мы мудаки. А 2xx — все молодцы, можно идти пить чай.