На какие группы делятся коды состояния HTTP и что они означают

Ответ

Коды состояния 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 успешен!')