Извлечение данных
Библиотека запросов не является частью стандартной библиотеки Python, поэтому вам нужно установить ее, чтобы начать работать с ней.
Для усправления пакетами Python в JupyterHub используется pip, поэтому, для установки запросов необходимо использовать следующую команду в консоли:
pip install requests
|
После того, как вы установили библиотеку, вам нужно будет ее импортировать. Также импортируем и библиотеку Pandas как pd.
import requests
import pandas as pd
|
Чтобы сделать запрос «GET», мы будем использовать requests.get() функцию, параметром которой является url, состоящий из:
-
части, полученной при создании вебхука;
-
метода, в зависимости от информации, которую нам необходимо получить
-
формата данных (.json)
-
параметров, если метод их подразумевает.
response = requests.get("url_из_обработчика/метод.json&...")
|
Список методов и необходимых им параметров можно найти в Документации по REST для Bitrix.
Когда мы делаем запрос, ответ от API сопровождается кодом ответа, который сообщает нам, был ли наш запрос успешным. Коды ответов важны, потому что они немедленно сообщают нам, если что-то пошло не так. Для получения кода необходимо использовать следующую команду:
print(response.status_code)
|
Вот некоторые коды, которые относятся к запросам GET:
-
200: Все прошло хорошо и результат был возвращен (если есть).
-
301: Сервер перенаправляет вас на другую конечную точку. Это может произойти, когда компания меняет доменные имена или имя конечной точки изменяется.
-
400: Сервер считает, что вы сделали неверный запрос. Это может произойти, если вы отправите неверные данные.
-
401: Сервер думает, что вы не аутентифицированы. Для многих API требуются учетные данные для входа, поэтому код 401 случается, когда вы отправляете неверные учетные данные для доступа к API.
-
403: Ресурс, к которому вы пытаетесь получить доступ, запрещен: у вас нет прав для его просмотра.
-
404: Ресурс, к которому вы пытались получить доступ, не найден на сервере.
-
503: Сервер не готов обработать запрос.
Если все прошло хорошо, можно записать данные, полученные от сервера API в переменную:
data = pd.DataFrame(response.json()['result'])
|
Пример получения списка задач:
response = requests.get("https://site.com/rest/77/t0k9n/task.item.getlist.json")
print(response.status_code)
task_item_getlist = pd.DataFrame(response.json()['result'])
|
Пример получения списка подразделений:
response = requests.get("https://site.com/rest/77/t0k9n/department.get.json")
print(response.status_code)
department_get = pd.DataFrame(response.json()['result'])
|
Пример получения списка групп и проектов:
response = requests.get("https://site.com/rest/77/t0k9n/sonet_group.get.json")
print(response.status_code)
sonet_group_get = pd.DataFrame(response.json()['result'])
|
Пример получения списка сделок:
response = requests.get("https://site.com/rest/77/t0k9n/crm.deal.list.json")
print(response.status_code)
crm_deal_list = pd.DataFrame(response.json()['result'])
|
Пример получения информации о сделке по идентификатору:
response = requests.get("https://site.com/rest/77/t0k9n/crm.deal.get.json&ID=1")
print(response.status_code)
crm_deal_get = pd.DataFrame(response.json()['result'])
|
Пример получения списка пользовательских полей сделок:
response = requests.get("https://site.com/rest/77/t0k9n/crm.deal.userfield.list.json")
print(response.status_code)
crm_deal_userfield_list = pd.DataFrame(response.json()['result'])
|
Пример получения пользовательского поля сделок по идентификатору:
response = requests.get("https://site.com/rest/77/t0k9n/crm.deal.userfield.get.json&ID=1")
print(response.status_code)
crm_deal_userfield_list = pd.DataFrame(response.json()['result'])
|