Ответ
HTTP статус-коды — это трёхзначные числовые коды в ответе сервера, которые указывают на результат обработки HTTP-запроса. Первая цифра определяет класс ответа.
Группы (классы) статус-кодов:
| Класс | Описание | Примеры |
|---|---|---|
| 1xx (Информационные) | Запрос получен, процесс продолжается. Уведомление для клиента. | 100 Continue, 101 Switching Protocols |
| 2xx (Успешные) | Запрос успешно обработан и понят сервером. | 200 OK, 201 Created, 204 No Content |
| 3xx (Перенаправления) | Для завершения запроса требуются дальнейшие действия (часто — ещё один запрос). | 301 Moved Permanently, 302 Found, 304 Not Modified |
| 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/data')
# Проверка успешности запроса
if response.status_code == 200:
data = response.json()
print('Успех:', data)
elif response.status_code == 404:
print('Ошибка: Ресурс не найден (404)')
elif response.status_code >= 500:
print(f'Ошибка сервера: {response.status_code}')
else:
print(f'Неожиданный статус: {response.status_code}')
# Удобный метод для проверки кодов 4xx/5xx
if response.ok: # Эквивалентно 200 <= response.status_code < 400
print('Запрос успешен')
Важность для тестирования: При тестировании API необходимо проверять не только успешные сценарии (2xx), но и корректность возвращаемых кодов ошибок (4xx, 5xx) для некорректных данных или отсутствующих прав.
Ответ 18+ 🔞
А, слушай, вот эта вся хуйня про HTTP статус-коды — это, блядь, как язык, на котором сервер с тобой разговаривает. Только вместо слов — три цифры, но за каждой, сука, целая драма.
Представь, ты в бар приходишь. Ты — клиент, бармен — сервер. Ты ему запрос кидаешь: «Давай виски!».
Вот как он может ответить:
1xx (Информационные, 100-199)
Он такой: «Слышал, слышал, щас подам, не дёргайся». Это типа 100 Continue — «продолжай в том же духе, я слушаю». Ничего не произошло, просто он подтвердил, что не спит.
2xx (Успешные, 200-299)
Идеальный исход! Он ставит перед тобой стакан и говорит: «Держи, на, 200 OK». Или, если ты заказал что-то сложное, чего раньше не было, он может сказать 201 Created — «вот, специально для тебя приготовил, заебись». А 204 No Content — это когда ты спросил: «Убери пустой стакан», а он молча убрал и кивнул. Всё сделано, но отвечать нечем.
3xx (Перенаправления, 300-399)
А вот тут начинается цирк. Он говорит: «Виски? Так он же, блядь, вон в том углу, на другой стойке!» (301 Moved Permanently). Или: «Щас нет, но иди к тому чуваку у окна, у него есть» (302 Found). Твоя задача — пойти и повторить запрос уже туда.
4xx (Ошибки клиента, 400-499) А вот это уже твои косяки, дружок. Ты — мудак.
400 Bad Request— ты такой: «Давай виски... эээ... на троих... но один стакан... и с перцем!». Бармен смотрит на тебя как на идиота: «Чё? Перефразируй, я нихуя не понял».401 Unauthorized— «А пропуск покажи. Нет пропуска? Пошёл нахуй».403 Forbidden— «Пропуск-то есть, но виски — только для VIP. Тебе нельзя, хоть тресни».404 Not Found— классика жанра. «Виски? А у нас такого, блядь, никогда и не было. Ты вообще в том ли баре?».
5xx (Ошибки сервера, 500-599) А это уже бармен обосрался. Ты всё правильно попросил, а у него проблемы.
500 Internal Server Error— он взял бутылку, а у него трясутся руки, он её об пол уронил. «Извини, я, сука, всё сломал внутри, сам в шоке».502 Bad Gateway— он пытается у официанта в подсобке спросить, а тот в отключке. Связи нет.503 Service Unavailable— он просто тебе заявляет: «Всё, я сегодня заебался, закрываюсь, иди нахуй». Сервер перегружен.
А теперь смотри, как этим на практике пользоваться в Питоне, это же ебушки-воробушки:
import requests
# Кидаем запрос, как тот мужик в баре
response = requests.get('https://api.example.com/data')
# А теперь расшифровываем ответ бармена-сервера
if response.status_code == 200:
data = response.json()
print('Успех! Вот твои данные:', data) # Всё заебись, пьём
elif response.status_code == 404:
print('Ошибка: Бля, такого адреса нет (404)') # Ты искал не там
elif response.status_code >= 500:
print(f'Ошибка сервера: {response.status_code}') # Сервер обосрался
else:
print(f'Неожиданный статус: {response.status_code}') # Что-то странное
# Есть ещё короткий способ, типа "всё ли в целом норм?"
if response.ok: # Это значит статус между 200 и 399
print('Запрос прошёл без косяков!')
И запомни, для тестирования это пиздец как важно. Недостаточно проверить, что при правильных данных всё работает (2xx). Надо ещё удостовериться, что если ты, как клиент, ведёшь себя как мудак (шлёшь хуйню), сервер тебе корректно и по делу отвечает 4xx. И что если у него самого сбоит (5xx), он тоже не молчит, а кричит об этом. Вот тогда, блядь, система считается живой.