Рубрики
Без рубрики

Создание запросов API с Python

Python находится в разгар возрождения. Это никогда не уходило, но использование теперь растет, как никогда раньше. Wi … Теги с Python, учебником, API.

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

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

Питон хорошо для API?

Похоже, что странный вопрос, но учитывая большое веб-присутствие Node.js и Ruby, вы можете подумать, что Python не очень хорош для создания вызовов API. Это неправда. На самом деле, Python имел долгое и преданное присутствие в Интернете, в частности, с ее колбой и библиотеками Django.

Поскольку Python является мощным, доступным способом манипулировать данными, имеет смысл также использовать его для получения источников данных. Вот где приводит звонки API. Начнем с самой популярной библиотеки HTTP Python, используемой для создания вызовов API. Запросы Отказ

Запросы

Запросы – это доступная ведущая библиотека, которую разработчики используют для создания запросов API в Python. Он предлагает интерфейс для создания HTTP-запросов синхронно Отказ Давайте направимся в некоторые распространенные типы запросов, которые вы можете сделать с запросами. Следующие примеры все будут предположить, что ваш проект включает запросы. Вы можете следовать их Инструкции по установке , но гист:

Установите его через Пип или пиронв :

pip install requests

Затем убедитесь, что импортируйте запросы в ваш проект

import requests

Общие типы API Вызывы с запросами

Самый простой Получить Запрос интуитивно понятен.

response = requests.get('https://example.com')

Как мы можем видеть с Получить Способ выше, запросы предлагают ярлыки методы для глаголов HTTP, включая Пост , Поставить , Удалить , ГОЛОВА и Варианты Отказ

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

response = requests.get('https://example.com', params={'name': 'Bearer'})

ответ Переменная содержит данные, возвращаемые API в наших примерах. Существует три основных способа доступа к данным.

  • Как текст, с Ответ
  • Как укусы с Ответ
  • Как JSON с Ответ.json ()
  • Или как сырой ответ с ответ

В дополнение к корпусу ответа мы также можем получить доступ к коду состояния с Ответ .status_code , заголовки с Ответ.Аельс , и так далее. Вы можете найти полный список свойств и доступных методов Ответ в просьбах. Ответная документация Отказ

Как мы видели с Пармы Аргумент, мы также можем пропустить заголовки к запросу.

response = requests.get('https://example.com, headers={'example-header': 'Bearer'})

Вот, мы передаем заголовки Аргумент с помощью словаря Python заголовков.

Последний общий тип вызова API, который мы сделаем, это полнофункциональный Пост с аутентификацией. Это будет сочетать методику предыдущих заголовков с использованием данные аргумент

url = 'https://example.com'
headers = {'Authorization': 'Bearer example-auth-code'}
payload = {'name':'Mark', email: 'mark@bearer.sh'}

response = requests.post(url, headers=headers, data=payload)

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

url = 'https://example.com'
headers = {'Authorization': 'Bearer example-auth-code'}
payload = {'name':'Mark', email: 'mark@bearer.sh'}

response = requests.post(url, headers=headers, json=payload)

Это будет кодировать полезную нагрузку как JSON, а также автоматически изменить Content-Type Заголовок к Приложение/JSON Отказ

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

AIOHTTP.

При совершении асинхронных HTTP-запросов вам нужно будет воспользоваться более новыми функциями в Python 3. Хотя библиотека запросов имеет варианты и плагины для обращения асинхронного программирования, одна из самых популярных библиотек для Async является AIOHTTP. Используется вместе с asyncio мы можем использовать AioHTTP сделать запросы в асинхронном пути. Код немного сложнее, но обеспечивает все дополнительные свободы, которые предоставляют асинхронные вызовы.

Чтобы начать, нам нужно будет установить AioHTTP Отказ

Установить AioHTTP Отказ

pip install aiohttp

Общие типы API Вызывы с AioHTTP

Мы начнем с того же Получить Запрос мы видели ранее. Для начала импортировать обе библиотеки, и определить ASYNC-функцию.

import asyncio #  [1]
import aiohttp

async def main(): # [2]
    async with aiohttp.ClientSession() as session: # [3]
    async with session.get('http://example.com') as resp: # [4]
        response = await resp.read() # [5]
        print(response)

asyncio.run(main()) # [6]

В указанном выше коде мы выполняем следующее:

  1. Мы импортируем необходимые библиотеки.
  2. Определить Главная как асинхронная функция.
  3. Мы создали Клицессионация от AioHTTP Отказ
  4. Мы используем сеанс для выполнения запроса HTTP Get.
  5. Далее мы ждем ответа и распечатайте его.
  6. Наконец, мы используем Беги Способ Asyncio Python, чтобы вызвать асинхронную функцию.

Если вы не работали с Async в Python, это может выглядеть странно и сложно по сравнению с более ранними примерами. Производители AioHTTP Рекомендую установить одно сеанс на приложение и открытие/закрытие соединений на одном сеансе. Чтобы сделать нашими примерами самостоятельно, я покинул примеры в менее эффективном формате.

Далее давайте посмотрим на полнофункциональный Пост С заголовками Auth, как в примере запросов.

# ...

async def main():
    async with aiohttp.ClientSession() as session:
        async with session.post('http://example.com',
            headers={'Authorization':'Bearer 123456', 'Content-Type':'application/json'},
            json={'title':'Try Bearer'}) as resp: # [1]

            response = await resp.json() # [2]
            print(response)

asyncio.run(main())

Существует несколько различий между этим примером и предыдущим:

  1. Сессия использует пост Способ и проходит в заголовки и словарях JSON в дополнение к URL.
  2. Мы используем встроенную библиотеку JSON Метод от ответа на анализ возвращенного JSON.

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

Дополнительные библиотеки, чтобы попробовать

В то время как Запросы Самым популярным, вы можете найти значение в некоторых из этих дополнительных библиотек для более уникальных случаев использования.

  • httpx. : httpx предлагает как синхронизацию, так и поддержку асинхронизации. Он также использует запрос-совместимый API, который сделает перемещение между двумя намного проще. В настоящее время библиотека находится в бета-состоянии с ожидаемым 1,0 мин-летом 2020 года, но стоит следить за тем, как он созревает.
  • httpcore. : Содержание с трендом Pre-1.0, httpcore Это интересный вариант, если вы строите библиотеку. Это низкий уровень, поэтому вы можете построить свои собственные абстракции поверх него. Они явно рекомендуют не Чтобы использовать его, если вам не нужна библиотека низкоуровневой.
  • Urllib3. : Мы должны Urllib3. Если только потому, что это базовая библиотека, которая просит и многие другие (в том числе PIP) построены на вершине. В то время как менее удобное для пользователя, чем некоторые из библиотек высокого уровня, Urllib3 является мощным и тестированным с бою. Если по какой-то причине вам нужно что-то с меньшим количеством абстракций, чем запросы, это хороший вариант.

Сделать большую часть вызовов API

С властью Python в обработке данных и недавней возрождении, благодаря чему-то сообществам ML и Data Science, это отличный вариант для взаимодействия с API. Важно помнить, что даже самые тестируемые на бой и популярные сторонние API и услуги все еще страдают от проблем и отключений. На предъявителе, мы строим инструменты, чтобы помочь управлять этими проблемами и лучше отслеживать ваши сторонние API. Дайте носитель попробовать Сегодня, и давайте узнаем, что вы думаете!

Оригинал: “https://dev.to/bearer/making-api-requests-with-python-2h3i”