API

Код

Часто виникає потреба об’єднати кілька сервісів або автоматизувати обмін даними між різними програмами, але без спеціальних знань це здається складним. Саме тут на допомогу приходить API.

API (Application Programming Interface) – це набір правил і протоколів, що дозволяють програмам взаємодіяти між собою.

Він визначає, як одне програмне забезпечення може запитувати дані або відправляти команди іншому, роблячи обмін інформацією структурованим і передбачуваним.

У цій статті ми пояснимо, як програми “спілкуються” через API, розглянемо приклади реальних запитів і навчимося виконувати базові API-виклики. Це допоможе зрозуміти, як автоматизувати процеси та інтегрувати різні сервіси навіть без глибоких технічних знань.

Як працює API

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

Що таке API

API (application programming interface – програмний інтерфейс застосунку) – це набір правил і способів, за якими програми обмінюються даними і взаємодіють між собою.

Всі ці взаємодії відбуваються через функції, методи, класи або інші елементи програми. Це основний принцип роботи API.

Наприклад, коли ви купуєте квиток у кіно карткою, термінал звертається до API банку, який випустив вашу картку, і відправляє запит на оплату. А коли ви замовляєте таксі через застосунок, він теж звертається до платіжної системи через API.

Програмний інтерфейс можна порівняти з договором між клієнтом і продавцем: клієнт – це застосунок, який потребує дані, а продавець – сервер або ресурс, що їх надає. У договорі прописані правила: що, як і коли клієнт може отримати.

Де зустрічається API

  • У мовах програмування API допомагає функціям коректно спілкуватися одна з одною. Функція, яка викликає, повинна дотримуватися типу даних і послідовності параметрів.
  • В операційних системах API дозволяє програмам отримувати доступ до пам’яті, змінювати налаштування або працювати з іншими ресурсами ОС. Щоб створювати додатки для конкретної системи, потрібно знати її API.
  • У веб-сервісах API забезпечує обмін даними між різними сервісами. Якщо API відкритий, творці публікують документацію. Наприклад, документація Telegram показує, як правильно робити запити до сервісу.
  • У вакансіях зазвичай йдеться саме про веб-API.

Чому API називають інтерфейсом

Інтерфейс – це межа між двома системами, де відбувається взаємодія і обмін інформацією, при цьому внутрішні процеси кожної системи приховані.

Наприклад, щоб подзвонити, вам не потрібно знати, як смартфон обробляє натискання на екран. Важливо лише, що певна дія завжди дає однаковий результат.

Так само за допомогою API ви можете виконати функцію програми, не знаючи, як вона працює всередині.

API для програм

Більшість програм реалізовані як «чорна скринька» – внутрішні процеси приховані за рівнями абстракції. Це зручно, бо дозволяє програмісту використовувати готові функції API в інших додатках.

Наприклад, операційні системи надають API, щоб програми могли:

  • працювати з файлами;
  • відтворювати графіку;
  • зберігати дані;
  • використовувати мережеві можливості;
  • відтворювати звук.

Документація API описує, які функції потрібно викликати і які параметри передати.

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

Види API

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

Web API

Web API – загальна назва для всіх API, які використовують для взаємодії між веб-сервісами через інтернет. Вони дозволяють додаткам обмінюватися даними та виконувати дії через протокол HTTP(S). REST, SOAP і GraphQL належать до Web API.

REST API

REST API – це підхід до створення веб-сервісів, який визначає правила роботи API.

Він базується на принципах:

  • Клієнт-серверна архітектура. Програма розділяється на сервер і клієнт. Код і дані зберігаються на сервері, а ваш браузер або додаток підтягує потрібну інформацію.
  • Відсутність стану (statelessness). Кожен запит до сервера має бути самодостатнім. Сервер не зберігає дані про попередні взаємодії, що зменшує навантаження.
  • Кешованість (cacheability). Відповіді API можна зберігати на стороні клієнта для повторного використання без додаткових запитів. Це прискорює роботу і знижує навантаження на сервер.
  • Одинаковість інтерфейсу (uniform interface). REST API працює через стандартні HTTP-методи: GET, POST, PUT, DELETE. Також встановлюються правила іменування ресурсів, щоб спростити роботу з API.
  • Шарова система (layered system). API може проходити через проміжні системи – сервери, проксі, шлюзи, балансувальники навантаження. Клієнт не бачить, з чим саме він працює.
  • Код на вимогу (code on demand) – необов’язковий принцип. Сервер може відправляти код, який виконуватиметься на стороні клієнта, наприклад JavaScript для інтерактивних елементів.

Плюси REST API

Легко освоїти, особливо в порівнянні з SOAP або GraphQL.

Використовує стандартні HTTP-методи.

Широка підтримка і сумісність із веб-технологіями.

Підтримує кешування і масштабованість.

Мінуси REST API

Перевантаження мережі. REST API зазвичай передає дані у текстових форматах (JSON, XML), що збільшує обсяг переданої інформації порівняно з бінарними форматами.

Відсутність єдиного стандарту. Реалізація REST API залежить від вимог конкретного проєкту, тому інтегрувати різні сервіси іноді складно.

Безпека. API не має вбудованих механізмів авторизації та аутентифікації – їх потрібно реалізовувати самим.

Немає підтримки довгоживучих з’єднань. REST працює за принципом “запит-відповідь”, тому для постійних з’єднань, як веб-сокети, його використовувати не можна.

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

SOAP API

SOAP – це протокол обміну повідомленнями в мережі з чітко визначеними правилами.

Для форматування повідомлень використовується XML, а правила опису, обробки та передачі повідомлень стандартизовані. Однією з головних особливостей SOAP є високий рівень безпеки: повідомлення можна шифрувати, підписувати цифровим підписом і контролювати транзакції.

Плюси SOAP API

Стандартизація. SOAP має чіткі правила для обміну повідомленнями, тому ви завжди отримуєте передбачуваний результат.

Безпека. Підтримуються шифрування, автентифікація повідомлень і контроль транзакцій, що важливо для корпоративних додатків.

Гнучкість. SOAP працює поверх різних протоколів передавання даних: HTTP, TCP, SMTP. Це відрізняє його від REST API, який використовує тільки HTTP.

Мінуси SOAP API

Складність. Реалізація та підтримка SOAP займає більше часу, ніж REST API.

Низька продуктивність. Відповіді SOAP часто об’ємніші через XML, що знижує швидкість передачі даних.

Обмежена підтримка JSON. SOAP працює тільки з XML, тому для використання сучасних форматів даних, як JSON, потрібні додаткові адаптації.

SOAP API часто використовують у корпоративних системах і фінансових додатках, де важливі безпека, стандартизація та контроль транзакцій. Ви можете застосовувати його для інтеграції систем, які потребують надійного обміну даними між серверами.

GraphQL

GraphQL – це мова запитів для API, яка дозволяє отримувати лише ті дані, які вам справді потрібні. За допомогою одного запиту ви можете дізнатися інформацію, яка в REST вимагала б кількох запитів. Це можливо завдяки суворій типізації структури запитів.

Переваги GraphQL

Гнучкість. Ви запитуєте тільки потрібні дані, і мережа не передає зайвої інформації.

Агрегація даних. Один запит може повертати інформацію з кількох джерел одночасно, тоді як у REST для цього потрібно робити кілька запитів.

Ефективність. Менше даних передається мережею, що знижує навантаження на сервер і економить ресурси.

Недоліки GraphQL

Складність налаштування. Впровадження GraphQL потребує більше часу, ніж REST API.

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

Екосистема. Для GraphQL доступно менше інструментів і бібліотек, ніж для REST, що може ускладнювати розробку.

GraphQL підходить для сучасних веб- і мобільних додатків, де важлива точна робота з даними, економія ресурсів мережі і можливість отримати інформацію з різних джерел за один запит. Ви можете використовувати його, щоб ефективно організувати взаємодію між клієнтом і сервером та спростити обробку складних даних.

RPC (gRPC, tRPC)

RPC (Remote Procedure Call) – це протокол, який дозволяє програмі викликати функції на віддаленому сервері так, наче вони виконуються локально на вашому комп’ютері або додатку. RPC API відправляє на сервер запит із зазначенням методу і параметрів, а у відповідь отримує результат виконання цього методу.

Існують різні реалізації RPC, наприклад, gRPC від Google та tRPC, який створений для TypeScript.

Переваги RPC

Простота використання. Ви викликаєте віддалені функції так само легко, як локальні, що зменшує обсяг коду і спрощує розробку.

Висока продуктивність. Деякі реалізації RPC використовують бінарні формати передачі даних і протокол HTTP/2, що прискорює роботу з віддаленим сервером.

Недоліки RPC

Менша сумісність. Освоїти RPC складніше, ніж REST або GraphQL, а ще потрібно знати мову опису інтерфейсів (IDL – Interface Definition Language).

Обмежена гнучкість. RPC виконує конкретні функції на сервері і повертає результат, а не просто отримує ресурси. Через це його складніше використовувати для деяких веб-додатків, де потрібна гнучка робота з даними.

RPC підходить, коли потрібно швидко викликати функції на сервері і отримати результат з мінімальною затримкою. Ви можете застосовувати його в системах, де важлива висока продуктивність і точне виконання серверних методів.

Інтеграція API

Інтеграція API – це процес, коли кілька застосунків з’єднуються між собою за допомогою API і обмінюються даними. Завдяки цьому один сервіс може використовувати можливості іншого, спрощуючи роботу користувача і автоматизуючи процеси.

Приклад інтеграції

Уявіть, що у вас є інтернет-магазин і ви хочете автоматизувати доставку замовлень. Для цього інтегрують API служби доставки. Процес виглядає так:

Інтернет-магазин отримує дані замовлення: адресу, вагу та габарити посилки.

Ці дані через API надсилаються до служби доставки.

Служба обробляє запит і повертає інформацію про вартість і час доставки.

Магазин відображає цю інформацію покупцеві.

За допомогою API можна також підключати сервіси прийому платежів, відображати відгуки з інших платформ або інтегрувати авторизацію через соцмережі.

Чому API популярні у розробників

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

Що дає API:

Доступ до готових інструментів. Наприклад, бібліотека TensorFlow надає функції для машинного навчання, що дозволяє швидко створювати нейромережі без ручної реалізації алгоритмів.

Підвищення безпеки. Функціональність, що потребує захисту, можна винести у відокремлений сервіс, а через API надавати доступ лише потрібним застосункам.

Пов’язування різних систем. API допомагає підключати платіжні системи, сервіси авторизації через соцмережі, сторонні бази даних і хмарні сервіси.

Зменшення витрат на розробку. Часто легше та швидше використовувати готовий платний API, ніж розробляти аналогічну функціональність з нуля.

Надійність сторонніх сервісів. Багато API підтримуються комерційними компаніями або спільнотами розробників, що гарантує стабільну роботу і регулярні оновлення.

Функції в API

У API немає суворо визначеного набору функцій – розробники додають ті методи, які допомагають клієнтським застосункам взаємодіяти з їхнім сервісом.

Наприклад, API для аналізу текстів може містити методи:

  • пошуку всіх однокореневих слів,
  • підрахунку кількості сполучників,
  • виявлення частих словосполучень.

Функції API можуть виконувати не тільки утилітарні завдання. Вони також можуть бути елементом маркетингу, коли доступ до API пропонується як окрема послуга, що дозволяє іншим компаніям або розробникам створювати власні сервіси на основі вашого продукту.

Заробіток за допомогою API

Багато компаній, особливо ті, що створюють складні застосунки, надають доступ до API своїх продуктів за плату або у вигляді комерційних сервісів. Це дозволяє клієнтам використовувати потужності сервісу без необхідності реалізовувати складну функціональність самостійно.

Наприклад, творці відеоредактора можуть обробляти та рендерити відео на своїх серверах. Через API клієнт надсилає файли і налаштування, а у відповідь отримує готовий ролик. За цей сервіс компанія бере оплату, при цьому клієнт не потребує потужного обладнання або додаткового програмного забезпечення.

Популярні соціальні мережі також надають доступ до API. Завдяки цьому можна додавати на сайт авторизацію через Google, Facebook або інші платформи, а також отримувати дані для аналітики чи публікації контенту автоматично.

При цьому компанії зазвичай не розкривають, як саме реалізовано їхні API, тому для розробників вони залишаються «чорними скриньками». Ви знаєте, які методи доступні, які дані можна отримати і як правильно використовувати інтерфейс, але внутрішня робота сервісу прихована. Це дозволяє безпечно використовувати потужності сервісу та зосередитися на інтеграції та власному продукті.

Що запам’ятати

API допомагає програмам обмінюватися інформацією та взаємодіяти між собою. Завдяки йому розробники можуть використовувати готові інструменти, не витрачаючи час на повторну реалізацію функцій. Це робить застосунки безпечнішими, прискорює процес розробки та дозволяє ефективно поєднувати різні сервіси та системи.

Розуміння принципів роботи API та практичні навички виконання запитів відкривають нові можливості для автоматизації процесів, інтеграції сервісів і оптимізації роботи як розробників, так і бізнесу. Навчившись працювати з API, ви зможете швидше створювати складні рішення і зменшувати витрати на розробку та підтримку програмного забезпечення.

Павлов Максим

Founder & CEO Onpage School

Оцініть автора
Onpage School