Время прочтения: 3 мин.
Application Programming Interface (API, программный интерфейс приложения) представляет собой описание способов взаимодействия между различными программами или контракт, в котором отражены необходимые действия пользователя для получения определенного результата.
Пользователи работают с Graphical User Interface (GUI, графический интерфейс). Программы — с API, им не нужна графика, только контракт.
Основная цель создания API это помощь программисту при разработке программ за счет применения уже готового кода (какой-либо стандартной функции, процедуры, структуры или постоянного значения, которые будут в последующем выполняться в разрабатываемой программе).
Вы постоянно используете API. Компьютерная операционная система, кнопки в лифте, а также педаль газа в автомобиле — это все API. API находится поверх сложных систем и упрощает определенные задачи, посредник, который избавляет вас от необходимости знать все подробности о том, что происходит под «капотом». Стандартный web-API представляет собой интерфейс с URL-адресами в качестве элементов управления. В этом отношении весь интернет является своего рода API. Например, вы пытаетесь получить доступ к URL-адресу в браузере (также известному как HTTP-запрос), а web-сервер принимает множество сложных решений и на основе этого направляет вам определенный контент (также известный как ответ).
Основные методы HTTP-запросов:
- GET. Получает данные от сервера.
- POST. Создает новые данные на сервере.
- PUT. Обновляет данные посредством их замены на сервере.
- DELETE. Удаляет данные с сервера.
Доступ к web-API может предоставляться бесплатно и быть полностью открытым. Например, сервис предоставляющий прогноз погоды, делает это совершенно бесплатно в отношении прогноза температуры воздуха, но просит плату за информацию об уровне влажности или скорости ветра.
Ниже приводим пример кода на Python для получения документов, приложенных к обращениям внутренних клиентов, размещенных на корпоративном сайте:
# импорт библиотек
import pandas as pd
from os.path import join, isdir, splitext
from os import mkdir
import requests
from requests_negotiate_sspi import HttpNegotiateAuth
import urllib
# создаем GET-запрос
http = '''https://mysite.ru /app-api/api/v1/int/app /rest/attachment/load/attachment?fileName={1}&fileSize={2}'''
# создаем переменную для аутентификации
auth = HttpNegotiateAuth()
# создаем папку для сохранения вложений
save_dir = ‘FILES'
if not isdir(save_dir):
mkdir(save_dir)
# tab_files - ссылка, имя файла, размер
# поиск обращений и скачивание вложений
for x in tab_files.itertuples(index=False): urls:
fname = urllib.parse.quote(sd.FILENAME)
size = int(sd.FILESIZE)
url = x.URL
full_save_name = join(save_dir, '%s' % (sd.FILENAME))
with requests.get(url,auth=auth,verify=False,stream=True) as save_file:
content = b''
size_real = 0
for chunk in save_file.iter_content(8196):
content += chunk
size_real += len(chunk)
if size_real!=size:
full_save_name += '_ERROR'
if len(full_save_name)>200:
split_name = splitext(full_save_name)
full_save_name = split_name[0][:200]+split_name[-1]
with open(full_save_name,'wb') as save_file:
save_file.write(content)
В дальнейшем полученные документы возможно преобразовать к единому тестовому формату для анализа их содержания или поиска необходимой информации. Сортировки и классификации данных. Но это уже другая история.