Ответ
HTTP-коды состояния сгруппированы в пять классов, определяемых первой цифрой кода:
| Класс | Диапазон | Назначение | Ключевые примеры |
|---|---|---|---|
| 1xx | 100-199 | Информационные. Запрос принят, процесс продолжается. | 100 Continue, 101 Switching Protocols |
| 2xx | 200-299 | Успех. Запрос успешно получен, понят и обработан. | 200 OK, 201 Created, 204 No Content |
| 3xx | 300-399 | Перенаправление. Для завершения запроса требуются дальнейшие действия. | 301 Moved Permanently, 302 Found, 304 Not Modified |
| 4xx | 400-499 | Ошибка клиента. Запрос содержит синтаксическую ошибку или не может быть выполнен. | 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found |
| 5xx | 500-599 | Ошибка сервера. Сервер не смог выполнить корректный запрос. | 500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable |
Пример проверки в автотесте (Python):
import requests
response = requests.post('https://api.example.com/users', json={'name': 'John'})
# Ожидаем успешное создание ресурса
assert response.status_code == 201, f'Expected 201, got {response.status_code}'
# Также можно проверить по классу кода:
assert response.status_code // 100 == 2, 'Response was not successful (2xx)' Ответ 18+ 🔞
А, слушай, вот эти ваши HTTP-коды, блядь! Это ж как азбука Морзе для интернета, только цифрами. Сейчас разжую, как для распиздяев.
Смотри, их, сука, на пять семейств поделили, как мафию. Смотри на первую циферку — она всё решает.
| Класс | Диапазон | Что означает, ёпта | Самые попсовые коды |
|---|---|---|---|
| 1xx | 100-199 | Информашка. Сервер такой: "Чувак, я твой запрос услышал, не выёбывайся, жди". Это как "принял, понял" по рации. | 100 Продолжай (Continue), 101 Меняю протоколы (Switching Protocols) |
| 2xx | 200-299 | Успех нахуй! Всё прошло гладко, как по маслу. Запрос пришёл, сервер его понял, обработал и отправил тебе плюшку. Идеальный мир. | 200 ОК (всё заебись), 201 Создано (Created), 204 Контента нет (No Content) — типа сделал, но хвастаться нечем. |
| 3xx | 300-399 | Перенаправление, блядь. Сервер такой хитрожопый: "Не здесь, иди нахуй, в другое место". Или "У тебя и так всё есть, бери из кэша". | 301 Переехал навсегда (Moved Permanently), 302 Найден (Found, временный переезд), 304 Не менялось (Not Modified) — зачем грузить, если и так норм? |
| 4xx | 400-499 | Клиент обосрался. Это твои косяки, дружок. Либо запрос кривой, либо прав нет, либо страницу нахуй удалили. Сервер в белом пальто и с чистой совестью. | 400 Плохой запрос (Bad Request) — отправил хуйню, 401 Не авторизован (Unauthorized), 403 Запрещено (Forbidden) — не пущають!, 404 Не найдено (Not Found) — классика жанра, пиздец. |
| 5xx | 500-599 | Сервер обосрался. А вот это уже не твоя вина, а ихняя. Сервер сломался, завис, не может достучаться до базы — в общем, полный пиздец на их стороне. | 500 Внутренняя ошибка сервера (Internal Server Error), 502 Плохой шлюз (Bad Gateway), 503 Сервис недоступен (Service Unavailable) — все ушли в отпуск. |
Ну и как это в тестах проверить, чтобы не быть мудаком:
import requests
response = requests.post('https://api.example.com/users', json={'name': 'John'})
# Ожидаем, что юзер создался — код 201
assert response.status_code == 201, f'Ожидал 201, а получил {response.status_code} — опять эти пидарасы накосячили!'
# А можно умнее — проверить, что код вообще из семейства успешных (2xx)
assert response.status_code // 100 == 2, 'Ответ был не успешным (не 2xx), ёбаный насос!'
Вот и вся магия, блядь. Запомни: 2xx — ты молодец, 4xx — ты мудак, 5xx — мудаки они.