Skip to content

Глава 1.2: HTTP-методы и статус-коды

Время изучения: 40 минут


1. HTTP: Язык общения в космосе

Представьте, что вы — Центр Управления Полетами (ЦУП), а сервер API — космический корабль. HTTP (HyperText Transfer Protocol) — это радиосвязь между вами.

Каждое сообщение содержит:

  • Метод → Что сделать (например, "отправить зонд")

  • Статус-код → Результат операции ("зонд запущен успешно!")

💡 Космическая аналогия: GET /stars = "ЦУП → Кораблю: Сообщи координаты звезд!" 200 OK = "Корабль → ЦУП: Координаты переданы!"


2. Основные HTTP-методы

Каждый метод — как тип команды для космической миссии:

Метод Аналог в космосе Пример запроса Описание
GET Запрос данных (телескоп) GET /planets Получить список планет
POST Отправка нового объекта (запуск ракеты) POST /satellites Создать новый спутник
PUT Полное обновление объекта (коррекция орбиты) PUT /satellites/iss Обновить данные МКС
DELETE Уничтожение объекта (сход с орбиты) DELETE /debris/123 Удалить космический мусор

⚡ Пример кода (Python):

import requests

# GET: Получить данные о ракете Falcon 9
# Используем реальный эндпоинт SpaceX API
response = requests.get("https://api.spacexdata.com/v4/rockets/5e9d0d95eda69973a809d1ec")
print(response.status_code, response.json()['name']) # 200 Falcon 9

# POST: Создать новый пост в тестовом API
# Используем сервис-песочницу jsonplaceholder
new_post = {"title": "Artemis Mission", "body": "Ready for launch", "userId": 1}
response = requests.post("https://jsonplaceholder.typicode.com/posts", json=new_post)
print(response.status_code, response.json()['id'])  # 201 101 (или другой ID)


3. Важные статус-коды

Ответ сервера — как сигнал с космического аппарата:

Группа Код Аналог в космосе Описание
2xx 200 ✅ "Задание выполнено!" Успех
201 🚀 "Ракета запущена!" Объект создан
3xx 301 🌍 "ЦУП перемещен на новый адрес" Перенаправление
4xx 400 ❌ "Неверные координаты в запросе!" Ошибка клиента
404 🪐 "Планета не найдена!" Ресурс отсутствует
5xx 500 🔥 "Сбой в двигательной установке!" Ошибка сервера

4. Практика: Обработка статус-кодов

Всегда проверяйте ответ API! Пример обработки ошибок:

import requests

def get_post_data(post_id):
    """Функция для получения данных поста с обработкой статус-кодов."""
    try:
        response = requests.get(f"https://jsonplaceholder.typicode.com/posts/{post_id}")

        # Проверяем статус-код ответа
        if response.status_code == 200:
            print(f"✅ Данные для поста {post_id} успешно получены!")
            return response.json()
        elif response.status_code == 404:
            print(f"⚠️ Ресурс для поста {post_id} не найден!")
            return None
        else:
            # Обработка других клиентских (4xx) или серверных (5xx) ошибок
            print(f"🚨 Произошла ошибка! Статус-код: {response.status_code}")
            return None

    except requests.exceptions.RequestException as e:
        # Обработка ошибок соединения (например, нет интернета)
        print(f"🔥 Ошибка соединения: {e}")
        return None

# --- Тестируем нашу функцию ---
print("--- Поиск существующего поста ---")
get_post_data(1)

print("\n--- Поиск несуществующего поста ---")
get_post_data(9999) # Этот пост не существует, ожидаем 404

🔭 Пример из реального API (SpaceX): Запрос: GET https://api.spacexdata.com/v4/ships/OCISLY Ответ: 200 OK + данные о корабле Запрос: GET https://api.spacexdata.com/v4/ships/UNICORN Ответ: 404 Not Found


Квиз для закрепления

1. Какой метод использовать для получения данных о звездах?

2. Статус `201 Created` означает:

3. Метод для полного обновления данных спутника:

4. Что означает статус `500 Internal Server Error`?


🚀 Итог главы: HTTP-методы — ваши команды для космических миссий, а статус-коды — отчеты об их выполнении. Помните:

GET = "Дай данные", POST = "Создай новое", PUT = "Обнови всё", DELETE = "Уничтожь" 2xx = Успех, 4xx = Твоя ошибка, 5xx = Проблема у сервера

Готовьтесь к старту! В следующей главе мы расшифруем "телеграммы" от сервера — формат JSON.

📌 Практика: Используйте SpaceX API, чтобы отправить GET /launches/latest и изучить коды ответов!