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

Python: запросы к web-сервисам

Для запроса к web-сервисам рекомендуем использовать библиотеку requests.

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

$ pip install requests

Библиотека requests же установлена в Analytic Workspace

Если вы запускаете код внутри Analytic Workspace (ETL-скрипт или ETL-блок), то ничего дополнительно устанавливать не нужно.

Анатомия запросов к Web сервисам

В HTTP запросе можно выделить следующие существенные части:

  • Метод (GET/POST/PUT/PATCH)
  • Адрес ()
  • Заголовки
  • Аутентификационная информация
  • Параметры
<метод> <адрес>

Параметры запросов передаются:

  1. В query-параметрах
    GET https://jsonplaceholder.typicode.com/todos?id=1
    
  2. В url-параметрах
    GET https://jsonplaceholder.typicode.com/1
    
  3. В теле запроса (только для POST/PUT/PATCH запросов)
    POST https://jsonplaceholder.typicode.com
    Content-Type: application/json
    
    {
     "id": 1
    } 
    

Обработка исключительных ситуаций

При взаимодействии с web-сервисами существует два основных источника ошибок:

  1. Ошибки приложения на сервере;
  2. Сетевые ошибки.

Ошибки приложения

r = requests.get('https://jsonplaceholder.typicode.com/todos')

if not r.ok:
    # Возникла ошибка на сервере
    print('Ошибка запроса GET https://jsonplaceholder.typicode.com/todos: {e}')

Сетевые ошибки:

r = requests.get('https://unknown.domain.com/todos')