Как работать с API на Python: запросы и ответы в формате JSON

🐍 Как работать с API на Python

В этой статье ты узнаешь, как работать с API на Python, с использованием популярной библиотеки requests.

python json api пример

Если вы начинаете изучать Python и хотите научиться взаимодействовать с веб-сервисами — поздравляем! Вы на правильном пути.
Сегодня мы разберём самый простой и наглядный способ сделать HTTP-запрос к публичному API и получить данные в формате JSON.

Мы будем использовать:

  • Публичный тестовый API: https://jsonplaceholder.typicode.com/posts
  • Встроенный модуль Python: requests
  • Обработку ответа как обычный Python-словарь

Всё это — без сложных терминов, только чёткие шаги и рабочий код.

Что такое API и зачем с ним работать?

API (Application Programming Interface) — это «мост» между вашей программой и внешним сервисом. Через API вы можете:

  • Получать данные (например, список новостей, погоду, товары)
  • Отправлять информацию (например, создавать заказ или публиковать пост)
  • Управлять удалёнными сервисами

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

Шаг 1. Установка необходимого модуля

Python не включает HTTP-запросы «из коробки», но есть официальный рекомендуемый модуль — requests.

Установите его с помощью pip:

pip install requests

💡 Совет: если вы используете виртуальное окружение (что рекомендуется), активируйте его перед установкой.

Шаг 2. Выбор публичного API

Мы будем работать с сервисом:
👉 https://jsonplaceholder.typicode.com/posts

Это бесплатный и открытый тестовый API, созданный специально для обучения. Он отдаёт 100 фиктивных «постов» (как статьи в блоге), каждый из которых содержит:

  • userId — идентификатор автора
  • id — номер поста
  • title — заголовок
  • body — текст поста

Пример одного элемента (сокращённо):

{
  "userId": 1,
  "id": 1,
  "title": "sunt aut facere repellat...",
  "body": "quia et suscipit\nsuscipit recusandae..."
}

Шаг 3. Отправка GET-запроса

Создайте файл api_example.py и вставьте следующий код:

import requests

# 1. Отправляем GET-запрос к API
response = requests.get("https://jsonplaceholder.typicode.com/posts")

# 2. Проверяем, успешен ли запрос
if response.status_code == 200:
    print("✅ Успешно получены данные")
else:
    print(f"❌ Ошибка: статус {response.status_code}")
    exit()

# 3. Преобразуем JSON-ответ в Python-объект
data = response.json()  # Теперь это список словарей!

# 4. Выводим информацию о первых 3 постах
for post in data[:3]:
    print(f"\n📄 Пост #{post['id']} (автор: user {post['userId']})")
    print(f"Заголовок: {post['title']}")
    print(f"Текст: {post['body'][:60]}...")  # Первые 60 символов

Подробное объяснение кода

ЧАСТЬ КОДАЧТО ДЕЛАЕТ
requests.get(url)Отправляет HTTP-запрос типаGET(получить данные)
response.status_codeКод ответа:200= всё хорошо,404= не найдено и т.д.
response.json()Преобразует JSON-строку из ответа вPython-объект(список/словарь)
data[:3]Берём только первые 3 элемента, чтобы не засорять консоль
post[‘title’]Обращаемся к полям как к обычному словарю

response.json() работает только если сервер отдал JSON и заголовок Content-Type указан правильно (а в jsonplaceholder — всё в порядке).

Шаг 4. Запуск и результат

Выполните в терминале:

python api_example.py

Вы увидите примерно такой вывод:

✅ Успешно получены данные

📄 Пост #1 (автор: user 1)
Заголовок: sunt aut facere repellat provident occaecati excepturi optio reprehenderit
Текст: quia et suscipit
suscipit recusandae consequuntur expedita et cum...

📄 Пост #2 (автор: user 1)
Заголовок: qui est esse
Текст: est rerum tempore vitae
sequi sint nihil reprehenderit dolor beatae...

📄 Пост #3 (автор: user 1)
Заголовок: ea molestias quasi exercitationem repellat qui ipsa sit aut
Текст: et iusto sed quo iure
voluptatem occaecati omnis eligendi aut ad...

Шаг 5. Полезные улучшения

1. Получить только один пост (например, №5)

post_id = 5
response = requests.get(f"https://jsonplaceholder.typicode.com/posts/{post_id}")
if response.status_code == 200:
    post = response.json()
    print(f"Заголовок поста {post_id}: {post['title']}")

2. Обработка ошибок «по-взрослому»

try:
    response = requests.get("https://jsonplaceholder.typicode.com/posts", timeout=5)
    response.raise_for_status()  # вызовет исключение при 4xx/5xx
    data = response.json()
except requests.exceptions.RequestException as e:
    print(f"Ошибка сети или сервера: {e}")
except ValueError:
    print("Ответ не в формате JSON")

3. Сохранить данные в файл

import json

with open("posts.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)
print("✅ Данные сохранены в posts.json")

Почему это полезно?

Умение работать с API открывает двери к:

  • Парсингу данных с сайтов (даже динамических)
  • Интеграции с Telegram Bot API, OpenWeather, GitHub и др.
  • Созданию дашбордов, аналитики, автоматизации

А всё начинается с одного простого requests.get().

Заключение

Теперь вы умеете:

✅ Отправлять GET-запрос к публичному API
✅ Получать JSON-данные
✅ Преобразовывать их в удобный Python-формат
✅ Безопасно работать с ответом и выводить нужную информацию

Это базовый, но очень мощный навык для любого Python-разработчика.

Попробуйте сами:

  • Получите все посты от пользователя с userId = 3
  • Посчитайте, сколько всего постов в ответе
  • Выведите только заголовки

Удачи в изучении API! 🌐🐍

Если что-то осталось непонятным — пишите в комментариях! С радостью уточню, дополню или помогу с вашим кодом.

А чтобы не пропустить новые простые и полезные гайды по Python, автоматизации и разработке — подписывайтесь на мой Telegram-канал: https://t.me/pythonauto_org 🐍✨

Ваш интерес — лучшая мотивация для новых статей!

Оставьте комментарий