Что такое 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 и других специалистов. Он позволяет взаимодействовать с внешними сервисами, получать данные в реальном времени и автоматизировать множество процессов.