📝 API

HTTP-статус-коды: что сервер говорит твоей программе

0
Автор
04e5cc8b-58ac-4bdc-bdee-661bbb
📅
Опубликовано
08.05.2026
⏱️
Время чтения
2 мин
👁️
Просмотров
46
🌱
Уровень
Начальный
🐦 💼 ✈️

Каждый раз когда твоя программа делает запрос к API, сервер отвечает не только данными — он отвечает статус-кодом. Это трёхзначное число которое говорит: «всё хорошо», «такого нет», «нет доступа» или «я сломался».

Структура статус-кода

Статус-коды разбиты по группам:

Диапазон Значение
1xx Информационные (редко видишь)
2xx Успех ✅
3xx Перенаправление
4xx Ошибка на стороне клиента (твоя ошибка)
5xx Ошибка на стороне сервера

Самые важные коды

200 OK

Всё хорошо. Запрос выполнен, данные получены.

response = requests.get("https://api.chucknorris.io/jokes/random")
print(response.status_code)  # 200

201 Created

Ресурс успешно создан. Получаешь в ответ на POST-запрос (создание репозитория, публикация статьи).

204 No Content

Успех, но тело ответа пустое. Например при удалении записи.


400 Bad Request

Неверный запрос — сервер не понял что ты хочешь. Например передал неверный параметр.

{"cod": "400", "message": "bad request"}

401 Unauthorized

Не авторизован. Нет или неверный API-ключ.

{"cod": 401, "message": "Invalid API key"}

403 Forbidden

Авторизован, но нет прав. Например пытаешься изменить чужой репозиторий.

404 Not Found

Не найдено. Неверный URL или запрашиваемый объект не существует.

{"cod": "404", "message": "city not found"}

422 Unprocessable Entity

Синтаксис запроса правильный, но данные некорректны (например дата в неверном формате).

429 Too Many Requests

Превышен лимит запросов. Подожди и попробуй снова.


500 Internal Server Error

Сервер сломался. Это не твоя ошибка — проблема на стороне сервиса.

502 Bad Gateway / 503 Service Unavailable

Сервер временно недоступен. Попробуй позже.

Как работать со статус-кодами в Python

Способ 1 — проверка вручную

response = requests.get(url, params=params)

if response.status_code == 200:
    data = response.json()
elif response.status_code == 404:
    print("Не найдено")
elif response.status_code == 401:
    print("Неверный ключ")

Способ 2 — raise_for_status()

Метод raise_for_status() автоматически бросает HTTPError если код >= 400:

try:
    response = requests.get(url, params=params)
    response.raise_for_status()  # ← выбросит ошибку при 4xx или 5xx
    data = response.json()
except requests.exceptions.HTTPError as e:
    print(f"Ошибка: {e.response.status_code}")

Способ 2 лаконичнее и идиоматичнее — используй его в production-коде.

Правило 4xx vs 5xx

  • 4xx — ты что-то сделал не так. Исправляй запрос.
  • 5xx — сервер что-то сделал не так. Жди или сообщи в поддержку.

Практика: смотрим коды в браузере

  1. Открой DevTools (F12) → вкладка Network
  2. Перейди на любой сайт
  3. Кликни на любой запрос
  4. В разделе Headers найди Status Code

Ты увидишь 200 для успешных ресурсов, 304 (Not Modified, из кэша) для ресурсов которые не изменились.

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

API-ключи: что это и как с ними работать

Большинство публичных API требуют API-ключ — уникальную строку символов, которая идентифицирует тебя как пользователя сервиса.

📅 08.05.2026 👁️ 60
📝

Библиотека requests: HTTP-запросы из Python

requests — самая популярная Python-библиотека в мире. Более 300 миллионов загрузок в месяц. Она делает...

📅 08.05.2026 👁️ 45
📝

Как читать API-документацию

Документация API — главный инструмент разработчика. Умение её читать важнее, чем знать конкретный API наизусть:...

📅 08.05.2026 👁️ 48

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!