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

Що таке 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 і ця технологія знову стала актуальною. 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) сервіс автоматично заповнює товарні позиції, генерує профілі користувача та платіжні дані, токени для авторизації та ін.

CoinGecko API 

Pexels

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

Pexels 

Більш широкий список безкоштовних API з описами ви можете знайти, наприклад, тут.

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

Висновок

Сподіваємося, ми зацікавили вас темою API і білих плям з термінології розробника-початківця у вас стало менше. Якщо ви бажаєте глибше розібратися з темою REST API, рекомендуємо переглянути це відео.

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

Офіційно: GitHub Copilot Chat тепер доступний на iOS та Android

Сервіс GitHub, який належить Microsoft, випустив Copilot Chat на iOS та Android. GitHub Copilot Chat…

08.05.2024

OpenAI знищила 100 000 книг, за якими тренували GPT-3. Причетні теж кудись зникли

Компанія OpenAI видалила два величезних набори даних «books1» і «books2», які використовувалися для навчання моделі…

08.05.2024

Реєстр військозообов’язаних «Оберіг» показуватиме статус отримання повістки

В реєстрі військовозообов'язаних «Оберіг» буде відображатися статус отримання повістки. Але цей процес буде відбуватися згідно…

08.05.2024

«Хакнуть» систему — босам «зріжуть» бонуси: Microsoft удосконалює програму кібербезпеки

Корпорація Microsoft в світлі останніх подій вирішила прив'язати зарплати керівників до функціонування систем безпеки: якщо…

08.05.2024

Українські програмісти створили Lağoda QT — гру-головоломку кримськотатарською мовою

Українські програмісти створили безплатну гру-головоломку Lağoda QT.  Кожен рівень — вірш одного з видатних кримськотатарських…

07.05.2024

В Copilot для Microsoft 365 додали українську мову

Корпорація Microsoft оголосила про підтримку української мови у Copilot для Microsoft 365. Українська мова входить…

07.05.2024