Содержание
Для новичка в программировании есть много «страшных» терминов, название которых ни о чем не говорит. Один из таких терминов – API, программный интерфейс приложения. Сейчас мы вам «на пальцах» объясним, что такое API, для чего оно нужно и какие бывают разновидности API.
Большинство приложений (как десктопных, так и мобильных) работают по клиент-серверной архитектуре. Это означает, что приложение или сервис состоит из двух программных частей – клиентской и серверной. Предположим, вы заходите на сайт с прогнозом погоды, чтобы узнать, будет ли сегодня в вашем городе дождь. Вы вставляете ссылку в ваш веб-браузер и он загружает по адресу данные, используя транспортный протокол HTTP. В данном случае ваш браузер – это клиентская часть веб-приложения, а данные, которые сгенерированы под запрос вашего браузера – это ответ серверной части веб-приложения.
Чтобы узнать прогноз погоды, вы могли поступить и иначе – воспользоваться программой на вашем смартфоне (это тоже клиентская часть). Вы запускаете ее на Android (или IOS – в зависимости от типа используемой платформы), после чего программа обращается к серверу. Но на этот раз она запрашивает не сайт, а лишь маленький файлик – фрагмент данных в формате JSON с информацией о том, будет дождь или нет. И в случае с браузером, и в случае с мобильным приложением клиентская и серверная часть каким-то образом находят общий язык. Этот «общий язык» и называется API. Он позволяет двум приложениям функционировать, общаться между собой, не обращая внимания на такие «неудобства», как, например, разные языки программирования, на которых сделана клиентская и серверная часть. Вы можете использовать в качестве клиентской части приложение, написанное для платформы IOS, а можете использовать приложение для Android и т. д.
Более того, использовать API могут не только пара клиент-сервер, но и, скажем, два сервера. Например, вы воспользовались сервисом для покупки авиабилетов (обращаясь к API этого сервиса), а сайт вам еще и показал прогноз погоды в той местности, куда вы отправляетесь – то есть сервер послал запрос на адрес другого сервера, связавшись с API сервиса метеослужбы.
Попробуем представить себе ситуацию в виде простой аналогии. Все автомобили имеют руль и педаль газа. Если вы умеете водить автомобиль, то можете сесть в автомобиль любой марки и поехать из пункта А в пункт В. А все потому, что у вас есть интерфейс – знакомый вам руль и знакомая педаль газа. Поэтому вам не важно, что за электроника скрыта под капотом, ведь вы знаете как использовать машину с помощью элементов ее интерфейса. В определенном смысле, руль и педаль газа – это API автомобиля.
Теоретически, вместо себя вы можете посадить за руль знакомого или, даже, сконструировать механического робота, который займет водительское место, и тоже будет крутить руль и жать педаль газа. Иными словами, интерфейс автомобиля в виде руля и педали позволяет вести автомобиль кому угодно. Точно так же программный интерфейс приложения позволяет серверной части приложения функционировать с клиентской частью.
Разработка API состоит из двух частей – написания кода и составления правил общения с приложением. Составление правил включает:
Не правда ли, напоминает принцип работы функции в языках программирования? Она принимает некоторую информацию на вход, выполняет с данными действия и затем выдает что-то на выход. API это и есть набор функций и составляется он так, как захочет разработчик. Сортировать API можно по назначению. Скажем, разработчик делает отдельно API для авторизации в системе (а также регистрации), отдельно API для списка отчетов с разными функциями (Отчет №1, Отчет №2, Отчет №3 и т.д.), отдельно API для платежек с разными платежными системами (Банк1, Банк2 и пр.) и так далее. Можно также создать единое для всех функций общее API или группировать функции иным способом, как вам удобно.
В одной системе может находиться несколько API, скажем – отдельно общее API, а отдельно API Банка и API интегратора со своими методами. К каждому из этих API соотносится свой контракт-соглашение, который определяет, какие действия в нем можно выполнять, какие опции в нем реализованы. В случае, когда мы имеем дело с SOAP и REST интерфейсами, то это, как правило, описывается стандартом WSDL или спецификацией WADL. Само собой, функции можно переиспользовать и включать их в разные наборы API.
К опциям API можно прибегать на прямо, а косвенно, с помощью графической оболочки GUI. При этом пользователь обращается к некоторому набору визуальных элементов, упрощающих общение с функциями API – кнопочкам, спискам, чекбоксам и так далее.
Самый популярный стандарт API – REST API. До него был SOAP – Service Object Access Protocol. Он содержал правила синтаксиса для оформления запросов и ответов, отправляемых веб-приложениями. Все приложения, которые поддерживали SOAP, обязаны были обмениваться данными в формате XML через HTTP или SMTP.
XML (расширяемый язык разметки) хранит данные в легко читаемом виде – используя для этого теги. Стандарт REST, в отличие от SOAP, не является протоколом, а представляет собой архитектурный стиль.
В SOAP нужно было создавать в разы больше кода, заворачивая его в XML. Rest же предоставляет данные в виде ресурсов, вызвать которые можно по уникальной URL-ссылке. То есть, например, чтобы обратиться с списку подписок пользователя на каналы YouTube, необходимо выполнить запрос вида https://www.youtube.com/feed/subscriptions
Веб-API, который соответствует подходам REST-API называют RESTFUL API.
RESTFUL API применяют для работы HTTP-запросы для работы с ресурсами – такие как GET (для получения информации) или POST (запрос, необходимый для отправки данных). Также применяются запросы PUT/PATCH для обновления либо изменения и DELETE для удаления данных.
В отличие от SOAP, который использует только формат XML, RESTFUL система поддерживает обмен сообщениями в различных форматах — обычный текст, YAML, HTML, XML, JSON.
REST API появилась как более удачная альтернатива технологии удаленного вызова процедур RPC. Но в 2015 году Google выпустил фреймворк gRPC и данная технология снова стала актуальной. Этот фреймворк поддерживает более 11 языков программирования – от Java и C++ до Ruby и Python, благодаря чему клиентскую и серверную часть приложения можно разрабатывать совершенно в разных средах. В gRPC была добавлена поддержка аутентификации, а в качестве базового транспортного протокола использовался HTTP 2.0 (к слову, REST часто использует версию HTTP 1.1).
Для отладки приложения и настройки работы сервисов gRPC применяет трассировку, выполняя мониторинг вызова процедур. Это дает возможность быстро проводить оптимизацию и вносить коррективы в функционал. Основная проверка реализуется с помощью опции Health Check. Для простой структуры определения сервисов используются .proto-файлы.
И, наконец, последний инструмент для работы с API, о котором стоит упомянуть – GraphQL. Он позволяет указывать точные данные и упрощает получение и склейку данных из нескольких источников.
И, напоследок мы рассмотрим список наиболее интересных и востребованных API.
Google Sleep API — это API для распознавания активности на платформе Android, который отображает информацию о бездействии пользователя. Этот API можно применять, например, для автоматического отключения экрана в часах. Используя алгоритм искусственного интеллекта, API смотрит на показания датчиков света и движения в качестве входных данных, и уже по ним определяет, действительно ли пользователь спит и как долго.
Ресурс Pexels — это одна из лучших бесплатных библиотек с фотографиями и видео. API на основе RESTful дает возможность получить программный доступ ко всему контенту в базе. Для интеграции данного сервиса достаточно буквально нескольких строк кода. Вы можете производить поиск по преобладанию на изображении цветовой палитры определенного оттенка, по ориентации кадра на видео, по ключевым словам, размеру и пр.
Более широкий список бесплатных API с описаниями вы можете найти например, тут .
Также ранее мы писали об API Gateway.
Надеемся, мы заинтересовали вас темой API и белых пятен в терминологии начинающего разрабчика у вас стало меньше. Если вы желаете глубже разобраться с темой REST API, рекомендуем посмотреть данное видео https://www.youtube.com/watch?v=lzQIhjElV_g
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…