Ответ
Коды состояния HTTP — это стандартные ответы сервера на запросы клиента. Они группируются в пять классов по первой цифре, каждый из которых указывает на общий результат обработки запроса.
Основные классы кодов:
-
1xx (Informational): Запрос принят и продолжает обрабатываться. Клиент должен ожидать окончательного ответа.
100 Continue
: Сервер получил заголовки запроса и готов принять тело запроса.102 Processing
: Запрос обрабатывается, но ответ еще не готов (используется в WebDAV).
-
2xx (Success): Запрос был успешно получен, понят и принят.
200 OK
: Стандартный успешный ответ для GET, PUT, POST.201 Created
: Запрос успешно выполнен, и в результате был создан новый ресурс.204 No Content
: Сервер успешно обработал запрос, но не возвращает никакого содержимого.
-
3xx (Redirection): Для выполнения запроса требуются дальнейшие действия со стороны клиента.
301 Moved Permanently
: Ресурс навсегда перемещен по новому URL.302 Found
: Временное перенаправление. Клиент должен использовать старый URL для будущих запросов.304 Not Modified
: Ресурс не изменялся с момента последнего запроса (используется для кэширования).
-
4xx (Client Error): Запрос содержит синтаксическую ошибку или не может быть выполнен.
400 Bad Request
: Сервер не может обработать запрос из-за ошибки на стороне клиента (например, неверный формат JSON).401 Unauthorized
: Для доступа к ресурсу требуется аутентификация.403 Forbidden
: У клиента нет прав доступа к содержимому, аутентификация не поможет.404 Not Found
: Сервер не может найти запрошенный ресурс.
-
5xx (Server Error): Сервер не смог выполнить корректно составленный запрос.
500 Internal Server Error
: Общая ошибка сервера, которая произошла при обработке запроса.502 Bad Gateway
: Сервер, выступая в роли шлюза, получил недействительный ответ от вышестоящего сервера.503 Service Unavailable
: Сервер временно не может обрабатывать запросы (например, из-за перегрузки или технического обслуживания).
Пример проверки статуса в Python с помощью requests
:
import requests
try:
response = requests.get('https://api.github.com/invalid-url')
# Проверяем, был ли запрос успешным (коды 2xx)
response.raise_for_status()
except requests.exceptions.HTTPError as err:
print(f"HTTP ошибка: {err}")
print(f"Статус-код: {err.response.status_code}")
# Пример успешного запроса
response = requests.get('https://api.github.com')
if response.status_code == 200:
print('nЗапрос к API GitHub успешен!')