Що таке API і для чого він потрібен
19:23, 20.06.2022
Протягом вашого, мабуть, багаторічного досвіду роботи з ПК, ноутбуком чи смартфоном, ви напевно стикалися з цією короткою абревіатурою - API, що розшифровується як інтерфейс програмування додатків (Application Programming Interface). Хоча більшість користувачів не знають про використання API, API задіяні у величезній частині додатків в наш час, забезпечуючи різні функції, без яких світ додатків не виглядав би так, як він виглядає. Якщо ви коли-небудь замислювалися, що таке API, то наступна стаття прояснить для вас всі його основні аспекти.
Основні особливості API
Інтерфейс прикладного програмування - це набір інструментів і функцій, які забезпечують взаємодію різних програм між собою. Крім того, API часто також відповідає за зв'язок між різними частинами системних додатків. API є життєво важливими для створення складних і багаторівневих підтримок, які підтримують широкий спектр функцій.
Механіка, що лежить в основі API
Різні API зазвичай представлені у вигляді бібліотек, що містять різні набори функцій, які в подальшому можуть бути використані розробниками для виконання різних завдань. API як такий працює як своєрідний комунікаційний міст між інтерфейсом клієнтської програми та сервером API, який відповідає за внутрішню логіку та доступ до баз даних.
Однією з основних цілей API є полегшення комунікації між клієнтом, який робить запити, і сервером, який ці запити обробляє. Ось як загалом виглядає процес взаємодії з API:
- Клієнт надсилає запит за допомогою відповідних методів HTTP. Цей запит включає будівельні блоки API, такі як заголовки, параметри і, за бажанням, тіло запиту.
- Сервер обробляє запит, перевіряючи кінцеву точку і метод, потім читає або записує в базу даних, виконує обчислення або викликає інші сервіси і перевіряє автентифікацію та авторизацію.
- Сервер надсилає відповідь, яка містить код статусу, заголовки та тіло відповіді.
- Клієнт отримує і обробляє відповідь. Після цього додатки використовують дані за необхідності, щоб відобразити отриману інформацію користувачеві або зберегти її локально.
Структурні елементи API
Зазвичай API включає наступні компоненти:
- Кінцева точка: Кінцева точка - це конкретна URL-адреса, за якою клієнтська програма може отримати доступ до API.
- Запит: Запит створюється клієнтом і надсилається на сервер. Включає в себе
- HTTP-метод: Тут задається тип операції. Це може бути GET, POST, PUT, DELETE тощо.
- Заголовки: Заголовки містять додаткову інформацію, наприклад, токени автентифікації.
- Параметри: Параметри включають параметри запиту (додаються до URL-адреси) і параметри тіла (включаються в тіло запиту).
- Відповідь: Відповідь - це дані, які надсилаються з сервера клієнту, зазвичай представлені у форматах JSON або XML.
- Коди статусу: Ці коди відповідають за вказівку результату запитів (наприклад, 200 - успіх, 404 - не знайдено, 500 - помилка сервера).
Різні типи API
Існують різні типи API, а також кілька способів їх класифікації на основі різних аспектів.
Веб-API є найпоширенішим типом API. Ці API використовують HTTP/HTTPS для забезпечення зв'язку між клієнтом і сервером через Інтернет.
Бібліотечні API- це API, які забезпечують зв'язок з різними бібліотеками мов програмування. Вони зазвичай використовуються розробниками для виконання завдань шляхом включення викликів функцій у свій код.
API операційної системи використовуються для взаємодії з базовими операційними системами, зокрема надають функції для керування різними апаратними та системними ресурсами.
API бази даних - це API, які широко використовуються в системах управління базами даних (СКБД), надаючи різні методи для виконання CRUD - створення, читання, оновлення та видалення операцій над базами даних.
Віддалені API - це API, що використовуються для управління віддаленими ресурсами через мережу. Вони особливо важливі для розподілених систем і хмарних сервісів.
Апаратні API - це API, які використовуються для забезпечення взаємодії між програмним і апаратним забезпеченням, надаючи інструкції про те, як отримати доступ до певних апаратних ресурсів. Поширеними прикладами є драйвери пристроїв та API Інтернету речей.
Сервісні API - це API, які забезпечують функціональність різних веб-сервісів та хмарних сервісів. Спектр можливостей, які вони надають, надзвичайно різноманітний, включаючи такі речі, як зберігання даних, машинне навчання, обробка платежів та багато інших.
Вбудовані API - це API, що використовуються у вбудованих системах для забезпечення функціональності для конкретних апаратних і програмних середовищ.
Політика релізу: Доступність API
API можна класифікувати відповідно до їх доступності з точки зору політики релізу. Тут ми маємо три основні типи: приватні (внутрішні), партнерські та загальнодоступні.
Приватні (внутрішні) API- це АПІС, які використовуються в межах певної організації. Їхнє призначення - з'єднувати системи, сервіси та додатки в межах цифрової екосистеми цієї організації, тоді як зовнішні користувачі зазвичай не мають до них доступу, а доступ до певних API часто навіть обмежений певними командами та відділами.
API цього типу відіграють важливу роль для організацій, посилюючи модульність у програмній архітектурі організації, дозволяючи різним внутрішнім системам взаємодіяти, а також підвищуючи ефективність і продуктивність. Наприклад, такі API можна використовувати для зв'язку внутрішніх кадрових систем із системами нарахування заробітної плати, а також API для внутрішньої обробки даних та аналітики.
Партнерські API - це API, які використовуються кількома бізнес-партнерами. Вони здебільшого не є загальнодоступними, а використовуються для інтеграції сервісів двох або більше компаній. Щоб отримати доступ до них, партнерам часто доводиться підписувати угоди та отримувати схвалення.
API цього типу часто використовуються для забезпечення зв'язку між платіжними процесорами та платформами електронної комерції або для інтеграції ланцюжків поставок між виробниками та роздрібними продавцями.
Відкриті (загальнодоступні) API - це API, які є загальнодоступними для будь-якого розробника, розроблені таким чином, щоб бути доступними для всіх, і часто супроводжуються вичерпною документацією.
Для доступу до цих API часто потрібна реєстрація, необхідна для отримання ключа доступу до API, тоді як деякі відкриті API є повністю відкритими і не потребують автентифікації.
Публічні API можуть мати найрізноманітніші варіанти використання, часто дозволяючи інтегрувати різні сервіси та рішення в додатки будь-якого розробника. OpenAI API, Google Maps API та OpenWeather API є поширеними прикладами таких API.
Стандарти та протоколи API
Різноманітні API існують завдяки широкому спектру стандартів і протоколів API. Ось деякі з найпоширеніших.
RPC, SOAP, REST, gRPC та GraphQL
RPC: RPC (Remote Procedure Call) - це тип віддаленого API, який дозволяє програмі виконувати процедури на віддалених пристроях.
gRPC: gRPC - це високопродуктивний фреймворк RPC, розроблений компанією Google, що включає HTTP/2 для транспортування, буфери протоколів для серіалізації, аутентифікації, балансування навантаження та багато іншого.
REST - це різновид WepAPI. Він використовує стандартні методи HTTP (GET, POST, PUT, DELETE). REST API також є безстатусними, тобто кожен запит від клієнта до сервера повинен містити всю інформацію, необхідну серверу для виконання цього запиту. Для обміну даними REST API здебільшого використовують JSON або XML.
SOAP: SOAP - це тип веб-API, який використовує XML для повідомлень і покладається на протоколи прикладного рівня, такі як HTTP і SMTP. В основному використовується для обміну структурованою інформацією в децентралізованому, розподіленому середовищі.
GraphQL: GraphQL - це мова запитів для API і середовище виконання для виконання цих запитів. Основна і єдина мета цього API - дозволити клієнтам запитувати саме ті дані, які їм потрібні.
Навігація по документації API
Документація API є критично важливою для реалізації різних API, оскільки вона містить інформацію, необхідну для використання того чи іншого API. Придатний для використання API потребує, в першу чергу, придатної для використання документації, що містить всю інформацію про те, як і для чого можна використовувати той чи інший API.
Хороша і добре структурована документація до API, як правило, містить:
- Оглядовий розділ: Тут ви можете знайти вступ - короткий опис того, що може робити API, базову URL-адресу, тобто кореневу URL-адресу для всіх кінцевих точок API, а також інформацію про версії API.
- Аутентифікація: Тут ви можете знайти інформацію про використовувані механізми автентифікації. Вони зазвичай включають ключі API, кроки автентифікації токенів OAuth та інші можливі методи.
- Кінцеві точки: Тут ви можете знайти детальну інформацію про всі кінцеві точки, цей розділ зазвичай містить основну частину документації. Зазвичай у цьому розділі описується URL-адреса кінцевої точки, методи HTTP і параметри - параметри шляху, параметри запиту, параметри тіла і заголовки.
- Приклади запитів: Містить вказівки та приклади того, як створювати запити.
- Формат відповіді: У цьому розділі описано структуру відповідей API.
- Обмеження тарифів: Політика щодо тарифів, включаючи кількість дозволених запитів за період часу, перевірку поточного використання та залишкових котирувань, а також рекомендації щодо роботи з обмеженням тарифів.
- SDK і бібліотеки: Для деяких API клієнтські бібліотеки або SDK надаються постачальником API. Цей розділ може містити посилання на офіційні SDK постачальника.
- Часті запитання та вирішення проблем: Поширені запитання та вирішення типових проблем.
- Підтримка та спільнота: Тут ви можете знайти інформацію про найбільші канали підтримки, посилання на форуми підтримки, підтримку електронною поштою або системи продажу квитків, а також на онлайн-спільноти та дискусійні дошки.
Практичні реалізації API
У сучасному цифровому світі використовується нескінченна кількість API. Давайте розглянемо деякі поширені приклади, з якими ви напевно стикалися в той чи інший момент.
Google Maps API: Щоразу, коли ви заходите на веб-сайт і бачите, що в його інтерфейс інтегрована інтерактивна карта, швидше за все, ви маєте справу з Google Maps API. Google Maps API дозволяє вбудовувати карти у веб-сторінки та додатки, геокодування (перетворення адреси в координати), вказівки та планування маршрутів тощо.
Twitter API дозволяє взаємодіяти з платформою соціальних мереж Twitter, завдяки чому користувачі можуть публікувати твіти, отримувати хронологію подій, отримувати доступ до профілів користувачів і списків підписників, шукати твіти, транслювати твіти в реальному часі та багато іншого. Цей API особливо корисний для інструментів управління соціальними мережами.
Stripe API - це API широко використовуваного платіжного процесора Stripe, який дозволяє безпечно обробляти платежі, керувати підпискою, обробляти відшкодування та суперечки, а також керувати інформацією про клієнтів.
Spotify API використовується для доступу до потокового сервісу Spotify, не перебуваючи на офіційному веб-сайті веб-плеєра Spotify. Це може бути особливо корисно для створення рекомендаційних програм, програмного забезпечення для діджеїв для інтеграції треків Spotify та обміну музичними функціями на платформах соціальних мереж.
Skyscanner Flight Search - це платформа, яка дозволяє користувачам шукати рейси в задане місце, що надаються різними компаніями, таким чином спрощуючи процес пошуку оптимального перельоту.
Переваги використання API
API відіграють вирішальну роль у сучасному програмному забезпеченні і, зокрема, у розробці додатків. Вони дозволяють розробникам програмного забезпечення інтегрувати готові сторонні рішення для своїх сервісів без розробки нових інструментів з нуля і без глибокого занурення у вихідний код. API - це своєрідний рівень абстракції, який забезпечує зв'язок між різними додатками та апаратним забезпеченням. Тому для багатьох компаній, які хочуть розробляти додатки різного роду, головне питання полягає не в тому, використовувати API чи ні, а в тому, які API використовувати і як інтегрувати їх у свої програмні та апаратні екосистеми.