Что такое API и как получить данные из REST API?
API (Application Programming Interface) — это интерфейс программирования приложений, позволяющий различным программным компонентам взаимодействовать друг с другом. Он определяет набор правил, с помощью которых одна программа может «разговаривать» с другой. В контексте веба особенно популярен REST API — интерфейс, основанный на принципах архитектуры REST (Representational State Transfer), через который можно получать и отправлять данные по протоколу HTTP.
Основы REST API
REST API позволяет клиенту (например, вашему приложению) обращаться к удалённому серверу и получать (или изменять) данные, используя стандартные HTTP-методы:
-
GET — получить данные (например, список пользователей)
-
POST — создать новый ресурс (например, добавить нового пользователя)
-
PUT — обновить существующий ресурс
-
DELETE — удалить ресурс
Эти запросы отправляются на URL-адрес API, называемый endpoint.
Пример API-запроса:
GET https://api.example.com/users
Пример ответа:
\[
{
"id": 1,
"name": "Alice",
"email": "alice@example.com"
},
{
"id": 2,
"name": "Bob",
"email": "bob@example.com"
}
\]
Данные обычно передаются в формате JSON, реже — XML.
Как получить данные из REST API с помощью Python
В Python для работы с REST API чаще всего используется библиотека requests. Она позволяет отправлять HTTP-запросы и получать ответы от сервера.
Установка библиотеки
pip install requests
Пример базового GET-запроса
import requests
url = "https://jsonplaceholder.typicode.com/users"
response = requests.get(url)
\# Проверяем, успешно ли выполнен запрос
if response.status_code == 200:
data = response.json() # Преобразуем JSON-ответ в Python-объект
for user in data:
print(user\["name"\], "-", user\["email"\])
else:
print("Ошибка:", response.status_code)
Пример GET-запроса с параметрами
params = {"userId": 1}
response = requests.get("https://jsonplaceholder.typicode.com/posts", params=params)
posts = response.json()
Пример POST-запроса
new_user = {
"name": "John",
"email": "john@example.com"
}
response = requests.post("https://jsonplaceholder.typicode.com/users", json=new_user)
print("Создан:", response.json())
Заголовки запроса
Иногда API требует заголовки — например, для авторизации или указания типа данных:
headers = {
"Authorization": "Bearer your_token_here",
"Accept": "application/json"
}
response = requests.get("https://api.example.com/secure-data", headers=headers)
Авторизация и аутентификация
REST API часто требует подтверждения личности клиента. Основные виды аутентификации:
-
API Key — уникальный ключ, передаваемый в заголовке или параметрах
-
OAuth2 — протокол авторизации с access token (например, Google API, Facebook API)
-
Basic Auth — логин и пароль, закодированные в Base64
Пример Basic Auth:
```pythonfrom requests.auth import HTTPBasicAuth
response = requests.get("https://api.example.com/protected",
auth=HTTPBasicAuth('user', 'pass'))
## **Ошибки и обработка ответов**
Важно проверять статус ответа сервера и обрабатывать возможные ошибки.
```python
if response.status_code == 200:
data = response.json()
elif response.status_code == 404:
print("Ресурс не найден")
elif response.status_code == 401:
print("Нет доступа — требуется авторизация")
else:
print("Ошибка:", response.status_code)
Работа с пагинацией
Большие API могут разбивать данные на страницы (pagination). Обычно в URL указывается ?page=1 или ?limit=100.
Пример:
page = 1
while True:
response = requests.get(f"https://api.example.com/items?page={page}")
data = response.json()
if not data:
break # Больше страниц нет
for item in data:
print(item\["name"\])
page += 1
Хранение полученных данных
Полученные данные можно сохранить для дальнейшей обработки:
import json
with open("data.json", "w") as f:
json.dump(data, f, indent=4)
Или сохранить в CSV:
import csv
with open("data.csv", "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=\["id", "name", "email"\])
writer.writeheader()
writer.writerows(data)
Работа с REST API в других инструментах
REST API можно также использовать через:
-
Postman — визуальный инструмент для тестирования API
-
curl — командная строка
-
Power BI / Excel — для загрузки данных напрямую
-
ETL-инструменты (Airflow, Talend) — в рамках пайплайнов
REST API является одним из ключевых способов интеграции между системами. Умение работать с ним — базовое требование для Data Engineer, Backend Developer, Analyst и других специалистов. Он позволяет взаимодействовать с внешними сервисами, получать данные в реальном времени и автоматизировать множество процессов.