Что такое API и REST API Каждый день мы пользуемся различными сервисами и приложениями, сайтами, делаем покупки при помощи банковских карт, совершаем большое количество прочих действий в интернете. Их согласованность достигается благодаря использованию API. Что такое API API расшифровывается как Application Programming Interface. Перевести можно как «Программный Интерфейс Приложения». Аббревиатура популярна, но от этого не слишком понятна. Попробуем рассказать, что такое API простыми словами. API — это набор правил и способов, при помощи которых разные программы взаимодействуют между собой и обмениваются информацией. Взаимодействие осуществляется при помощи методов и функций. Например, вы покупаете продукты в магазине. В процессе покупки терминал отправляет API банка, выпустившего вашу карту, запрос на оплату. Таким образом, API — это интерфейс, который выступает в качестве связующего звена между несколькими системами. При этом у API нет никакой информации о том, что происходит внутри каждой системы. Если нам что-то нужно, мы отправляем по API в систему, она предоставляет определенный результат. И нам не нужно разбираться, как такая система функционирует. Сокрытие части функций для максимального упрощения работы называется инкапсуляцией. Участков программного обеспечения, в которых разработчики могут совершить ошибку, становится меньше. API является по-настоящему удобным инструментом для разработчиков и пользователей, который упрощает взаимодействие с системой. ПО получает быстрый доступ к видеокарте для прорисовки графики или к устройствам ввода для взаимодействия с программным интерфейсом. Что такое REST API? С API разобрались. Тогда, REST API — что это? Это способ взаимодействия сайтов и приложений с сервером. Такая технология используется везде, где интернет-пользователю нужно предоставить информацию с сервера. Например, после нажатия иконки с видео на видеохостинге REST API запускает соответствующий ролик с сервера. Существует несколько принципов REST API: Отделение клиента от сервера. Код запросов остается на стороне клиента, а код доступа к данным — на стороне сервера. Это предоставляет возможность лучшего масштабирования серверного хранения данных. Кэшируемость. В данных запроса указывается, есть ли необходимость в кэшированиии данных в Rest API. Система состоит из нескольких уровней. Серверы располагаются на разных уровнях, они не связаны запросами с другими. Каждый сервер взаимодействует только с ближайшими уровнями. Единообразие интерфейса. Все данные запрашиваются через один URL-адрес при помощи стандартных протоколов (HTTP). Это значительно упрощает архитектуру проекта, делает взаимодействие с сервером более понятным. Нет записей о состоянии клиента. На сервере не хранится информация о проведенных операциях пользователя. Каждый запрос содержит только ту часть данных, которая необходима для получения необходимой информации от сервера. Почему API называют интерфейсом Интерфейс представляет собой границу, которая пролегает между двумя функциональными системами. На ней осуществляется обмен информацией и взаимодействие. При этом ни одна из систем не может видеть процессы, которые происходят внутри друг друга. Интерфейс позволяет на полную мощь задействовать возможности обеих систем. Не нужно задумываться о способах обработки запросов и механизмах их выполнения. В качестве примера можно привести работу клавиатуры. Для нас совершенно не важно, как компьютер обрабатывает нажатие на каждую клавишу. Главное — вовремя нажать на нужную кнопку, чтобы получить определенное действие. API также выполняет некоторый набор функций программы без знания того, как она работает. Именно поэтому API является интерфейсом. Виды API Разные проекты требуют использования различных видов API. Они подбираются в соответствии с ситуацией: в некоторых случаях важна скорость функционирования, в других — совместимость с другим программным обеспечением, безопасность и надежность. Web API Это общее название для всех API, использующихся для создания связи между веб-сервисами через интернет. При помощи Web API происходит обмен данными, функционирует протокол HTTP (S). REST О REST API мы уже писали. Это не протокол, а архитектурный подход для создания веб-сервисов. Говоря по-простому, это набор принципов и правил. У REST API есть собственные плюсы: его проще освоить, в нем используются стандартные HTTP-методы, он совместим с веб-технологиями и показывает хорошие возможности масштабируемости. Минусы выражаются в отсутствии единого стандарта и поддержки долгоживущих соединений. Также разработчики жалуются на недостаточный уровень безопасности и частые случаи перегрузки сети. REST API активно применяется в функционировании онлайн-магазинов и мобильных приложений. SOAP Это протокол обмена сообщениями в сети с определенным набором строгих правил и стандартов. Для форматирования сообщений применяется язык разметки XML. Отличительной особенностью SOAP является повышенный уровень безопасности, который достигается использованием механизмов шифрования, управления операциями и аутентификации сообщений. Преимущества: Стандартизация, которая позволяет получать предсказуемый результат. Используются методы шифрования и управления операциями, подпись сообщений можно осуществлять при помощи цифровой подписи. SOAP работает поверх не одного, а нескольких протоколов передачи данных. Недостатки: Обилие стандартов и правил делает SOAP сложным в реализации. Протокол нужно модифицировать, поскольку большинство современных приложений использует JSON. Ответы протокола SOAP имеют больший объем, поэтому скорость данных существенно снижается. GraphQL Специальный язык запросов для API. С его помощью клиенты могут получать только нужные им данные. Структура запросов имеет строгую типизацию, поэтому для получения информации достаточно одного запроса вместо нескольких (как в случае с REST). Преимущества GraphQL: Клиенты не передают лишнюю информацию, поскольку запрашивают только определенные данные. Благодаря типизации запросов и передаче определенной информации сеть не перегружена — это экономит ресурсы сервера. Один запрос позволяет получить данные из нескольких источников. Недостатки GraphQL: Внедрение и настройка языка занимает много времени. Составные запросы сложны — это приводит к появлению уязвимостей в сфере безопасности. У GraphQL куда меньше библиотек и инструментов, чем у REST. RPC (gRPC, tRPC) Специальный протокол для активации функций, расположенных на удаленном сервере. Он отправляет запрос с указанием метода и нужными настройками, после чего происходит выполнение действия. Преимущества RPC: Простота использования, что позволяет уменьшить кодовую базу. Взаимодействие с удаленным сервером происходит быстро благодаря использованию бинарных форматов передачи данных. Недостатки RPC: У протокола наблюдается ограниченная совместимость. Освоить его сложнее, чем прочие виды API. RPC требует выполнения нужной функции для определенного результата. Это ограничивает гибкость и возможность использования протокола в современных приложениях. Примеры API API передает информацию по запросу клиента или приложения. Например, нужно получить данные о погоде или свежих новостях и разместить их на портале. Запрос создается в браузере, ответ имеет вид HTML-страницы. Если же API используется в приложении, то для него вполне достаточно элемента информации, который имеет формат JSON. Пользовательский опыт в данном случае прост: он всего лишь осуществляет действие, которое связано с программой №1 в программе №2. Он не тратит время и силы на лишние переходы и использование сторонних услуг. Полную ясность в то, что такое API и как он работает, внесут приведенные нами примеры. Google Календарь Пример, известный всем пользователям Android и iOS. Существует два известных сервиса: Google Calendar и Apple iCal. Каждый из мировых гигантов предоставляет клиентам подключить через API свой календарь к сторонним приложениям. В итоге у пользователей появляется сразу несколько программ со схожим набором функций, что позволяет гибко планировать свой день. При помощи API создаются напоминания, новые события, редактируется информация в них. Погодное приложение Все погодные приложения получают данные из сторонних сервисов, сотрудничающих с метеостанциями. Разработчики ПО приобретают нужную им информацию. Получение каждого конкретного прогноза было бы очень долгим и сложным, если бы не API. В них содержится некоторый набор функций, при помощи которых создаются запросы о состоянии погоды в определенной местности. Запросы через интерфейс отправляются на метеостанцию, а результат быстро возвращается пользователю таким же путем. Сервис по заказу авиабилетов У каждой авиакомпании есть сайт и приложение, в которых отображается информация о наличии и стоимости авиабилетов. Но посещение каждого ресурса по отдельности занимает время. Поэтому создаются агрегаторы, например, Aviasales. При помощи API они собирают данные о стоимости авиабилетов в каждой авиакомпании и предоставляют их в обобщенном виде пользователям. Информация обновляется в режиме реального времени, что очень удобно. Кнопки авторизации Те самые кнопки, нажав на которые, можно зарегистрироваться на ресурсе через аккаунты в социальных сетях. Вариативность предлагаемых опций зависит от создателей сайта. Авторизация также осуществляется через API. Подобный подход удобен всем. Пользователям не нужно проходить долгую и нудную авторизацию, а у владельцев сайта появляется персональная информация о каждом зарегистрировавшемся для эффективного взаимодействия. Зачем нужен API? API позволяет решить большой круг задач. Однако хорош он не только этим. Использование интерфейса позволяет сделать функционирование программ стабильнее. Инкапсуляция (сокрытие значительной части функций) делает жизнь разработчиков проще. Разработчики нового программного обеспечения теперь экономят время и не стараются разобраться в логике функций и их реализации — это попросту не нужно. Программы выполняют тысячи внутренних операций, что проходит полностью незаметно для пользователя. Это делает функционирование крупных IT-продуктов безопасным. Оперирование с API позволяет заработать. Конвертация файлов, навигация, выполнение транзакций, сервисы наблюдения за погодой и многое другое — за использование своего ПО разработчики взимают плату. Почему разработчики используют API? Программисты заинтересованы в API по следующим причинам: Использование программного интерфейса значительно повышает уровень безопасности программного обеспечения. API позволяет вынести определенный набор функций в отдельное приложение — это нивелирует риск их неправильного использования. Применение готового интерфейса экономит силы разработчиков, уменьшает финансовые затраты. Создание и выход новых программных продуктов ускоряется и упрощается. Не нужно каждый раз изобретать собственный интерфейс: достаточно взять API от сторонних разработчиков и внедрить в свою разработку. Настройка связей между программами и сервисами при помощи API упрощается. Специалисты могут активно внедрять другое ПО, даже не вступая в переговоры с его создателем. Интеграция API Это процесс объединения нескольких приложений между собой при помощи API. Например, один сервис может обратиться за функционалом другого — это упрощает пользовательский опыт. На сайтах некоторых крупных новостных агрегаторов есть данные о погоде, курсах валют, информация о пробках в городе, гороскопы и многое другое. Такое обилие информации поставляется на страницу другими сервисами, которые были интегрированы посредством API. В качестве примера можно привести интернет-магазин техники. Его владельцы хотят сэкономить время, автоматизировав доставку. Для этого нужно внедрить API соответствующей службы. После внедрения процесс оформления и выполнения заказа будет иметь следующий вид: В интернет-магазин проступают пользовательские данные о заказе (определенном виде техники, ее параметрах, адресе доставки). Магазин направляет информацию через API в службу доставки. Она принимает данные, обрабатывает их, возвращает информацию о стоимости продукта, времени и нюансах доставки. Интернет-магазин пересылает данные покупателю. Это не единственный пример возможностей для интернет-магазина. При помощи API можно внедрить функцию приема платежей или отображать отзывы о товаре с других площадок. Разработчики не тратят время на создание собственных функций: они заимствуют их у коллег, экономят время и деньги. Какие функции могут входить в API Не существует определенных стандартов и ограничений для комплекса функций в API. Программисты сами определяют методы, которые, как они считают, можно использовать для связи приложений клиента и сервиса. Так, API применяется для сбора данных погоды, поиска слов по определенным параметрам в тексте, анализа колебаний курса валют и многого другого. Есть три основные элемента, на которых строится работа интерфейса: Процесс, выполняемый программой с использованием API. Информация, передаваемая интерфейсу для выполнения действия. Набор данных, получаемых программой после обработки при помощи API. Перед нами набор скрытых функций, внутри которых осуществляется обработка и предоставление передаваемой информации. Само функционирование скрыто благодаря процессу инкапсуляции. Конкретная функция API сама может стать услугой, а не обеспечивать функционирование определенных приложений. Это обеспечит разработчикам заработок. Как вызвать API? Вызов API — это запрос, который отправляется одной программой к другой. Он является средством доступа к данным и функциям. Вызовы обеспечивает качественное взаимодействие между разными системами. С их помощью происходит обмен информацией, интеграция и выполнение задач. Каждый вызов представляет собой четкий набор инструкций и параметров, имеющий определенную структуру. С его помощью выполняется определенная операция. Косвенные вызовы API Каждый из нас, выступая в роли обычного пользователя программ и сайтов, выполняет косвенный вызов API. Например, один клик на иконке текстового редактора запускает графический пользовательский интерфейс (GUI). Он состоит из большого количества функций, о которых совсем не нужно знать пользователю. Главное итог: запуск новой страницы в браузере. Можно привести большое количество примеров. Каждый из них сводится к тому, что вся «магия API» заключается в том, что пользователь получает необходимый ему результат без разбора функций и кода. Вызов API напрямую Существует вариант непосредственной работы с кодом. Разработчики программного интерфейса предоставляют необходимую документацию, в которой подробно описывают особенности работы ПО. В качестве упрощенного примера можно привести работу API погоды: import requests import json // Подключаем API import WeatherAPI // Задействуем его для получения информации о погоде let a = WeatherAPI(SomeData) // Передаем сформированный запрос на сервер метеостанции и забираем ответ: answer = request.post(API_URL, json_str) // Возвращаем получившееся значение return a Подводим итоги Как стандарт API становится все более популярным. У каждого крупного (и не очень) сервиса или мобильного приложения появляется собственный интерфейс. Ведь именно API разрешает разработчикам применять готовый инструментарий и не беспокоиться о качестве и безопасности сочетания программ между собой. Если кто-то из специалистов еще не разобрался с API, мы настоятельно рекомендуем сделать это как можно скорее. Вы разберетесь, как быстро подключать решения от сторонних разработчиков и оснащать свои сервисы надежными интерфейсами.