Глава 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
Квиз для закрепления
🚀 Итог главы: HTTP-методы — ваши команды для космических миссий, а статус-коды — отчеты об их выполнении. Помните:
GET
= "Дай данные",POST
= "Создай новое",PUT
= "Обнови всё",DELETE
= "Уничтожь"2xx
= Успех,4xx
= Твоя ошибка,5xx
= Проблема у сервера
Готовьтесь к старту! В следующей главе мы расшифруем "телеграммы" от сервера — формат JSON.
📌 Практика: Используйте SpaceX API, чтобы отправить
GET /launches/latest
и изучить коды ответов!