перейти к содержанию

Python и API: как использовать запросы Python для создания приложений на основе API

Всем привет! Вы хотите повысить уровень своих навыков Python и научиться интегрировать мощные API в свои приложения? Тогда это руководство для вас.

Я собираюсь познакомить вас с использованием фантастической библиотеки запросов Python для взаимодействия с веб-API всех видов. Имея некоторые базовые знания Python и запросы, вы сможете:

  • Запрос данных из любой конечной точки API
  • Создавайте приложения, которые интегрируются с популярными сервисами, такими как Twitter, Stripe, Twilio и т. д.
  • Автоматизируйте рабочие процессы, соединяя API вместе.
  • Разблокируйте массу полезных данных и функций для улучшения ваших приложений Python.

Звучит захватывающе, правда? Давайте погрузимся!

Зачем использовать API в Python?

Прежде чем мы перейдем к коду, давайте сначала разберемся зачем подключение к API очень полезно для разработчиков.

API позволяют различным программным приложениям взаимодействовать друг с другом. Компании и организации предоставляют API, чтобы разработчикам было проще создавать приложения с помощью своих сервисов.

Вот некоторые из основных причин использовать API в вашем коде:

  • Экономия времени – Не перестраивайте с нуля то, что уже существует в виде API!
  • Использовать данные – Получите доступ к полезным источникам данных, таким как погода, акции, социальные сети и многое другое.
  • Расширить функциональность – Интегрируйте карты, платежи, уведомления и многое другое.
  • Автоматизировать рабочие процессы – Беспрепятственно соединяйте различные системы.
  • Создавайте приложения быстрее – Сосредоточьтесь на логике вашего приложения, а не на базовой инфраструктуре.

Короче говоря, хорошо продуманные API помогают разрабатывать более качественные приложения быстрее.

По Отчет Postman о состоянии API за 2024 год, внедрение общедоступных API быстро растет:

  • 72% организаций используют общедоступные API в рамках своего основного бизнеса.
  • 58% сами имеют публичные API.
  • Запросы API для респондентов выросли более чем на 650% с 2020 по 2021 год.

Поскольку API-интерфейсы становятся все более распространенными в разных отраслях, самое время повысить свои навыки подключения к ним с помощью Python.

Начало работы с запросами Python

Python имеет фантастические библиотеки, которые упрощают работу с API. Самый популярный из них Запросы.

Запросы позволяют вызывать API всего несколькими строками кода:

import requests

response = requests.get(‘https://api.data.gov/education‘)

По сравнению с альтернативами более низкого уровня, такими как встроенный Python urllib модуль Requests сэкономит вам массу времени и избавит от головной боли.

Некоторые ключевые особенности запросов:

  • Простой и элегантный API
  • Делает HTTP-запросы чрезвычайно простыми
  • Встроенная поддержка JSON.
  • Обработка заголовков, параметров, аутентификация
  • Автоматические повторные попытки при сетевых ошибках
  • Широкий спектр дополнительных функций

Чтобы установить Requests, просто запустите:

pip install requests

Затем import requests в своем коде, и вы готовы начать выполнять вызовы API!

Давайте рассмотрим несколько простых примеров.

Выполнение GET-запроса

Самый распространенный вызов API — это запрос GET для получения данных из конечной точки.

Вот как сделать запрос GET с помощью Requests:

import requests 

response = requests.get(‘https://api.github.com/repos/requests/requests‘)

Это отправит запрос GET в конечную точку API GitHub для получения данных из репозитория Requests.

Мы получаем обратно Response объект, содержащий код состояния, заголовки ответов и данные.

Чтобы распечатать код состояния ответа:

print(response.status_code)

>>> 200

Код состояния 200 означает, что наш запрос выполнен успешно. Существует множество других кодов состояния, указывающих на ошибки или сбои — мы рассмотрим, как с ними обращаться позже.

Чтобы получить доступ к данным ответа, просто позвоните .json():

data = response.json()

print(data[‘stargazers_count‘])

>>> 64245

Данные автоматически анализируются как JSON. Это делает работу с API JSON очень простой.

Передача параметров

Для многих API вам необходимо передавать параметры для фильтрации данных, разбивки результатов на страницы и многого другого.

Передайте параметры как словарь в params Аргумент:

params = {‘type‘: ‘owner‘, ‘sort‘: ‘updated‘}
response = requests.get(‘https://api.github.com/repos/kennethreitz/requests‘, 
                        params=params)

Запросы кодируют параметры и добавляют их к URL-адресу.

Вы также можете передавать параметры непосредственно в URL:

response = requests.get(‘https://api.github.com/repos/kennethreitz/requests?type=owner&sort=updated‘)

В любом случае работает, но передача словаря считается более чистой.

POST запросы

Чтобы создать ресурсы на сервере, вы должны использовать запрос POST.

Передайте данные для публикации в виде словаря в json Параметр:

data = {‘name‘: ‘John Smith‘, ‘email‘: ‘[email protected]‘}
response = requests.post(‘https://api.example.com/users‘, json=data)

При этом данные кодируются в формате JSON и отправляются POST в API для создания нового пользовательского ресурса.

Для POST вам также следует проверить возвращаемый код состояния:

if response.status_code == 201:
  print(‘User created!‘)

Статус 201 означает, что ресурс успешно создан на сервере.

СТАВИТЬ, ИСПРАВИТЬ, УДАЛИТЬ

Помимо GET и POST, другими распространенными методами HTTP являются:

  • ПОЛОЖИЛ – Обновление существующего ресурса
  • PATCH – Частичное обновление ресурса
  • УДАЛИТЬ – Удалить ресурс

Они работают аналогично, просто вызовите соответствующий метод requests:

# PUT - Update user
requests.put(‘https://api.example.com/users/123‘, json=updated_data) 

# PATCH - Partial update  
requests.patch(‘https://api.example.com/users/123‘, json=partial_data)

# DELETE - Delete user
requests.delete(‘https://api.example.com/users/123‘)

Теперь вы знаете, как выполнять вызовы API, используя все распространенные методы HTTP!

Обработка ответов API

При работе с API вам необходимо обрабатывать данные ответа на основе кода состояния, возвращаемого сервером.

API используют стандартные коды состояния HTTP для обозначения успеха, ошибок или сбоев. Некоторые распространенные из них включают в себя:

  • 200 – ОК – запрос выполнен успешно
  • 201 – Created – Ресурс успешно создан.
  • 400 – Неверный запрос – запрос был неверным или отсутствовали данные.
  • 401 – Несанкционировано – Требуется аутентификация
  • 403 – Запрещено – У вас нет доступа к этому ресурсу
  • 404 – Не найден – Ресурс не существует.
  • 500 – Ошибка сервера – на сервере произошла непредвиденная ошибка.

Вы проверяете код состояния объекта Response:

response = requests.get(‘https://api.example.com/items/123‘)

if response.status_code == 200:
  # Success!
elif response.status_code == 404:
  # Notify user item does not exist

Для краткости я рекомендую обернуть все вызовы Requests во вспомогательную функцию, например:

def make_api_request(endpoint):
  response = requests.get(endpoint)

  response.raise_for_status()

  return response.json()

Это делает код чище, а также централизует обработку ошибок в одном месте.

raise_for_status() вызовет исключение, если есть код ошибки HTTP, например 500 или 404, что избавит вас от необходимости каждый раз проверять вручную.

Аутентификация с помощью API

Многие API требуют аутентификации для ограничения доступа. Некоторые распространенные формы аутентификации API включают в себя:

  • API ключи – Передайте уникальный ключ API через заголовок или параметр запроса.
  • Базовая авторизация – Передайте имя пользователя и пароль с запросом
  • Токены на предъявителя – Отправьте токен носителя OAuth 2.0 от провайдера аутентификации.
  • Дайджест auth – Аналогично базовой аутентификации, но учетные данные зашифрованы.

Запросы упрощают обработку аутентификации.

Чтобы использовать ключ API, передайте его как заголовок:

headers = {‘Authorization‘: ‘Bearer YOUR_API_KEY‘}
response = requests.get(‘https://api.example.com‘, headers=headers)

Для базовой аутентификации укажите имя пользователя и пароль в виде кортежа:

requests.get(‘https://api.example.com‘, 
            auth=(‘username‘, ‘password‘))

Запросы будут правильно обрабатывать ваши учетные данные.

Для токенов на предъявителя от поставщиков OAuth, таких как Facebook, Twitter, Google и т. д.:

params = {‘access_token‘: ‘OAUTH_TOKEN‘}
requests.get(‘https://api.example.com‘, params=params)  

Передайте токен доступа в качестве параметра, а Requests обработает все остальное.

Правильная аутентификация имеет решающее значение для безопасного доступа к API в ваших приложениях и рабочих процессах Python.

Рекомендации по работе с API

Теперь, когда вы знаете КАК Чтобы вызывать API с помощью Python, давайте обсудим некоторые рекомендации по эффективной работе с ними:

Обрабатывайте ошибки корректно

API могут выйти из строя самым неожиданным образом: серверы выходят из строя, сети выходят из строя, провайдеры вносят изменения.

При выполнении запросов API:

  • Используйте блоки try/кроме ловить ошибки
  • Обработка распространенных исключений, таких как ConnectionErrors
  • Проверьте коды состояния и обработайте ответы, отличные от 200.
  • Используйте экспоненциальную стратегию отсрочки для повторения неудачных запросов.

Это гарантирует плавное снижение производительности вашего приложения в случае сбоя API.

Соблюдайте ограничения скорости

Чтобы предотвратить злоупотребления, API вводят ограничения на скорость запросов в час/день.

Превышение этих ограничений заблокирует ваш доступ, возможно, навсегда.

Чтобы этого избежать:

  • Просмотрите документацию по ограничению скорости и понять свою квоту
  • Ограничение запросов - звонить только при необходимости
  • Внедрить таймер отсрочки если вы достигли предела, сделайте паузу перед повторной попыткой
  • Никогда не спамьте и не злоупотребляйте API! Это приведет к блокам.

Ограничения скорости защищают API, поэтому они работают для всех пользователей. Уважайте их при использовании.

Кэшировать ответы

API могут работать медленно в зависимости от возможности подключения. Для повышения производительности рассмотрите возможность кэширования ответов, особенно если данные не меняются часто.

Популярные библиотеки кэширования Python включают Redis, Memcached и SQLAlchemy.

Кэширование позволяет избежать ненужных сетевых вызовов для повторных запросов.

Примеры и использование Python API

Теперь давайте рассмотрим несколько реальных примеров популярных API и способы доступа к ним в Python.

API Twitter

API Twitter позволяет запрашивать твиты, пользователей, хэштеги и аналитику. Вам необходимо подать заявку на учетную запись разработчика Twitter, чтобы получить учетные данные API.

Установить пухлый библиотека для более дружественного интерфейса Twitter API:

pip install tweepy

Пример получения твитов по хэштегу:

import tweepy

client = tweepy.Client(bearer_token=TWITTER_TOKEN)

tweets = client.search_recent_tweets(query="#python")

for tweet in tweets.data:
   print(tweet.text)

Смотрите пост в дурацкие документы Больше подробностей.

API-интерфейс GitHub

API GitHub обеспечивает программный доступ к репозиториям, коду, пользователям и т. д. GitHub без аутентификации.

Пример получения пользовательских репозиториев:

import requests

response = requests.get(‘https://api.github.com/users/kennethreitz/repos‘)

for repo in response.json():
  print(repo[‘name‘]) 

Смотрите пост в Документы API GitHub для большего количества вариантов использования.

Полоса API

Stripe API позволяет встраивать платежи в приложения и веб-сайты.

Установить полоса библиотека и импорт:

pip install stripe

import stripe

Пример создания начисления:

stripe.api_key = ‘STRIPE_SECRET_KEY‘ 

charge = stripe.Charge.create(
  amount=1000,
  currency=‘usd‘,
  source=‘tok_visa‘ # Token from Stripe.js
)

Stripe возьмет на себя всю тяжелую работу по платежам за вас.

Читать Документация по API Stripe для полной справки по API.

Существует множество других замечательных API, таких как Slack, Twilio, Google Maps, AWS и другие! Ключом к успеху является поиск подходящего источника данных для вашего приложения и использование возможностей API.

Заключение

Я надеюсь, что это руководство предоставило полезный обзор создания запросов API в Python с использованием библиотеки Requests. Вот некоторые ключевые выводы:

  • Запросы упрощает вызов API — установите его с помощью pip
  • Используйте общие методы HTTP, такие как GET, POST, PUT, DELETE для операций CRUD.
  • Легко передавайте параметры, аутентификацию, заголовки и данные.
  • Правильно обрабатывайте коды состояния и ошибки
  • Внедряйте лучшие практики, такие как ограничение скорости и кэширование.
  • Интегрируйте крутые API, такие как Twitter, GitHub, Stripe и другие!

API помогают быстрее создавать более качественные приложения, позволяя использовать существующие данные и сервисы. Python и Requests предоставляют отличный способ раскрыть возможности API в вашем коде.

Для следующих шагов я рекомендую просмотреть официальный Запросы документов, чтение документации API всех сервисов, которые вы хотите интегрировать, и просмотр некоторых репозиториев, использующих API Python, например вот этот.

Надеюсь, вы нашли это руководство полезным! Дайте мне знать, если у вас есть еще вопросы по использованию Python и API. Приятного кодирования!

Присоединяйтесь к беседе

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *