API (application programming interface) – це набір готових класів, функцій, процедур, структур і констант. Вся ця інформація надається самим додатком (або операційною системою). При цьому користувачу не обов’язково розуміти, що це API технологія забезпечує взаємодію модулів. Мета наданої інформації – використання цих даних при взаємодії з зовнішніми програмами.
API різних продуктів використовуються програмістами для створення додатків, які будуть взаємодіяти один з одним. У загальному випадку цей механізм застосовується з метою об’єднання роботи різних додатків в єдину систему. Це досить зручно для виконавців. Адже в такому випадку до іншого додатку можна звертатися як до «чорної скриньки». При цьому не має значення його внутрішній механізм – програміст може взагалі не знати, що таке API.
Функції API
У процесі роботи елементи механізму API організовують багаторівневу ієрархію. При цьому підпорядковані компоненти також отримують подібну структуру. Всередині стандартної мережевої моделі OSI виділяють як мінімум 7 внутрішніх рівнів. Вони класифікуються від фізичного рівня трансляції біт до додатків, таких як протоколи HTTP і IMAP. Таким чином API верхнього використовує функціональність нижнього.
Одним з важливих компонентів організації інформації при описі API є бібліотеки функцій і класів. До їх складу входять описи сигнатур і семантики. Тут API функції – це просто частина механізму інтерфейсу. У цьому випадку сигнатура виступає як частина загального оголошення функції. З її допомогою виконується ідентифікація елемента. У різних мовах написання програм вона представлена різним способом. Тим самим визначається можливостями її перевантаження.
При описі мов фахівці намагаються розрізняти окремо сигнатури виклику та реалізації кожної конкретної функції. У цьому випадку сигнатура виклику визначається з урахуванням області видимості, імені, послідовності фактичних типів аргументів. Ці компоненти дають можливість компілятору розпізнати функцію в мові C++. У тих випадках, коли вона є методом певного класу, її сигнатура включається в ім’я цього класу.
Семантика ж функції представляє програмісту опис її роботи, виконуваних дій. Зазвичай у неї потрапляють результат обчислення та ті параметри, від яких він залежить. У цьому випадку результат виконання може включати залежності не тільки від аргументів, але й від фактичного стану. І не має значення, що це API з’єднання визначає можливість отримання інформації.
Типи API
Класифікація програмних інтерфейсів тісно пов’язана з призначенням і можливостями додатків, які через них керуються. Фактично при роботі складної системи часто існують альтернативні API, що дозволяють вирішити такі ж завдання іншими засобами. В окремі групи виділяють інтерфейси управління графічними компонентами програмних модулів (API графічних інтерфейсів wxWidgets, Qt, GTK тощо), операційними системами (Amiga ROM Kernel, Cocoa, Linux Kernel APIruen, OS/2 API, POSIX, Windows API), звукові (DirectMusic/DirectSound, OpenAL), віконні інтерфейси і так далі.
Тут їх поділ визначається рівнем додатка в ієрархії та функціональністю. Користувачі комп’ютерних ігор зазвичай не підозрюють, що це графічний API забезпечує їм таку швидку відтворення картинки і вражаючу яскравість зображень. До глобальних API часто відносять інтерфейси окремих мов програмування. Але з їхньою допомогою можна керувати вирішенням цілком конкретних і локальних завдань. Все залежить від реалізації певного алгоритму.
Проблеми, що виникають при роботі інтерфейсів багаторівневих систем, поділяються на дві великі групи:
- Труднощі портування коду програми при переході від одного API до іншого. Вони часто з’являються при перенесенні модулів в інші операційні системи.
- Зниження обсягу функціональності інтерфейсу при переході до управління з нижчого рівня на високий. У цьому випадку полегшується виконання строго визначеного класу завдань. При цьому можливості доступу до елементів управління іншими регуляторами втрачаються. Адже нижчий рівень дозволяє легко керувати базовими компонентами програми.
API вебмайстрів / пошукових систем
Для вебмайстрів і програмістів особливо важливі Web API. Такі системи управління включають в себе комплект HTTP-запитів. У результаті отримання таких запитів модуль генерує строго визначену структуру HTTP-відповідей. Для транспортування інформації між ними прийнято використовувати формати XML або JSON. Фактично в цьому випадку назва Web API буде синонімом позначення веб-служби. Іншими словами, це певні програмні системи зі своїми інтерфейсами. Для отримання конкретного доступу до них використовується ідентифікація в мережі за веб-адресою.
Наприклад, при передачі даних на сервер застосовується серверний API. У разі побудови програмних систем на основі сервіс-орієнтованої архітектури саме веб-служба є рівнем формування модулів. Для звичайних користувачів такі служби є синонімами абсолютно звичайних рішень в Інтернеті. Це може бути пошта, пошукова система, сервіс зберігання файлів, соціальних закладок і так далі.
У разі необхідності тестування веб-служби на великих обсягах різноманітних даних відповідний API testing надає механізм для такої об’ємної роботи. При правильній організації будь-який клієнт може використовувати такі служби незалежно від типу комп’ютера, виду браузера і місця свого знаходження в мережі. Прикладом використання в рекламі є API Яндекс.Директа. На його базі розробники створюють модулі для управління рекламними кампаніями.
При зверненні до систем просування сайтів для підвищення параметрів SEO API надає механізми інформаційної взаємодії. Зазвичай порядок роботи інтерфейсу намагаються передати в його назві. Ми можемо не знайти в пошуку, що таке syngestureapisampleapp application. Але з назви зрозуміло, що це приклад роботи інтерфейсу для одиничного користувача.
При цьому потрібно враховувати зміни в інтерфейсах, що відбулися після масового впровадження стандартів Web 2.0. У результаті було виконано перехід протоколу обміну структурованими даними в розподіленому обчислювальному середовищі SOAP (від англ. Simple Object Access Protocol — простий протокол доступу до об’єктів) до архітектурного стилю взаємодії компонентів розподіленого додатка в мережі REST (скор. від англ. Representational State Transfer — «передача стану представлення»).
Для багатьох веб-служб, до числа яких входять пошукові системи та інтернет-магазини, цей перехід призвів до спрощення архітектури та прискорення виконання завдань. Правильна організація інформаційних потоків призводить до того, що API сайту надає широкі можливості автоматизації останнього. При цьому окремі компоненти REST функціонують приблизно так само, як взаємодіють між собою сервери та клієнти в Інтернеті.
Хоча робота систем на архітектурі REST досі не має єдиного стандарту, більшість RESTful-реалізацій використовують конкретні стандарти, такі як HTTP, URL, JSON та XML. Тут особливо важливо, що відкритий API – це можливість доповнення та розширення системи взаємодії.
