Python, Web-сервисы

О web-API простым языком

Время прочтения: 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)

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

Советуем почитать