Рубріки: Теория

Что такое API, зачем он необходим и какую пользу несет

Сергій Бондаренко

Для новичка в программировании есть много «страшных» терминов, название которых ни о чем не говорит. Один из таких терминов – API, программный интерфейс приложения. Сейчас мы вам «на пальцах» объясним, что такое API, для чего оно нужно и какие бывают разновидности API. 

Как работает и зачем нужен API

Большинство приложений (как десктопных, так и мобильных) работают по клиент-серверной архитектуре. Это означает, что приложение или сервис состоит из двух программных частей – клиентской и серверной. Предположим, вы заходите на сайт с прогнозом погоды, чтобы узнать, будет ли сегодня в вашем городе дождь. Вы вставляете ссылку в ваш веб-браузер и он загружает по адресу данные, используя транспортный протокол HTTP. В данном случае ваш браузер – это клиентская часть веб-приложения, а данные, которые сгенерированы под запрос вашего браузера – это ответ серверной части веб-приложения.

Чтобы узнать прогноз погоды, вы могли поступить и иначе – воспользоваться программой на вашем смартфоне (это тоже клиентская часть). Вы запускаете ее на Android (или IOS – в зависимости от типа используемой платформы), после чего программа обращается к серверу. Но на этот раз она запрашивает не сайт, а лишь маленький файлик – фрагмент данных в формате JSON с информацией о том, будет дождь или нет. И в случае с браузером, и в случае с мобильным приложением клиентская и серверная часть каким-то образом находят общий язык. Этот «общий язык» и называется API. Он позволяет двум приложениям функционировать, общаться между собой, не обращая внимания на такие «неудобства», как, например, разные языки программирования, на которых сделана клиентская и серверная часть. Вы можете использовать в качестве клиентской части приложение, написанное для платформы IOS, а можете использовать приложение для Android и т. д.

Более того, использовать API могут не только пара клиент-сервер, но и, скажем, два сервера. Например, вы воспользовались сервисом для покупки авиабилетов (обращаясь к API этого сервиса), а сайт вам еще и показал прогноз погоды в той местности, куда вы отправляетесь – то есть сервер послал запрос на адрес другого сервера, связавшись с 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

Самый популярный стандарт 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. Он позволяет указывать точные данные и упрощает получение и склейку данных из нескольких источников.

Благодаря языку запросов GraphQL разработчик может использовать одно обращение API для получения сразу всех необходимых данных.

Примеры API: полезные и интересные

И, напоследок мы рассмотрим список наиболее интересных и востребованных API.

NASA API

Национальное управление по аэронавтике и исследованию космического пространства является обладателем огромной базы «космической» информации разного рода – фотографии далеких звезд и планет, информация, полученная с марсоходов, данные про экзопланеты и астероиды, сведения про магнитные бури, технологические проекты NASA и многое другое. Все это можно подключать и использовать для сервисов и мобильных приложений.

NASA API 

GIF Search

С помощью этого бесплатного API вы получаете доступ к огромной библиотеке анимированных файлов в формате GIF. Вы можете определять релевантность поиска по ключевым словам, указывать количество картинок в списке результатов, выбирать в случайном порядке и пр. 

GIF Search 

Deck of cards API

Если вы разрабатываете карточную игру, вам регулярно нужно выполнять такие действия как перемешивание карт в колоде, выбор заданного количества карт и пр. Этот API упрощает все эти манипуляции и перемешивание. А в репозитории проекта на гитхабе  вы найдете даже дизайн с картинками карт.

Deck of cards API 

Sleep API

Google Sleep API — это API для распознавания активности на платформе Android, который отображает информацию о бездействии пользователя. Этот API можно применять, например, для автоматического отключения экрана в часах. Используя алгоритм искусственного интеллекта, API смотрит на показания датчиков света и движения в качестве входных данных, и уже по ним определяет, действительно ли пользователь спит и как долго. 

Sleep API 

Telegram Bot API

Популярнейший API (по сути, надстройка над Telegram API) для разработки ботов в мессенджере Telegram. Из возможностей: работа через вебхуки, упрощенная разметка сообщений и прочее. Для телеграм-ботов не нужны дополнительные номера телефона. Их учетные записи служат интерфейсом для кода, работающего на вашем сервере.

Telegram Bot API

CoinGecko API

Если вы работаете над проектом, который так или иначе связан с криптовалютой, возможно, вас заинтересует данный API. Сервис вызывает список всех существующих криптовалют и показывает актуальные цены по версиям криптобирж из списка. CoinGecko API бесплатен и допускает до 100 запросов в минуту.

CoinGecko API 

Fake Store API

Если вы занимаетесь разработкой в сфере e-commerce, данный API может быть очень и очень полезен. Он предназначается для тестирования маркетинговых платформ и интернет-магазинов. API генерирует массу фейковых данных для совершения тестовых покупок онлайн. С помощью всех основных запросов (POST, GET, DELETE, PATCH и PUT) сервис автоматически заполняет товарные позиции, генерирует пользовательские профили и платежные данные, токены для авторизации и пр.

Fake Store API 

Pexels

Ресурс Pexels — это одна из лучших бесплатных библиотек с фотографиями и видео. API на основе RESTful дает возможность получить программный доступ ко всему контенту в базе. Для интеграции данного сервиса достаточно буквально нескольких строк кода. Вы можете производить поиск по преобладанию на изображении цветовой палитры определенного оттенка, по ориентации кадра на видео, по ключевым словам, размеру и пр.

Более широкий список бесплатных API с описаниями вы можете найти например, тут .

Pexels 

Также ранее мы писали об API Gateway.

Заключение

Надеемся, мы заинтересовали вас темой API и белых пятен в терминологии начинающего разрабчика у вас стало меньше. Если вы желаете глубже разобраться с темой REST API, рекомендуем посмотреть данное видео https://www.youtube.com/watch?v=lzQIhjElV_g

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023