Що таке веб API

23

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

API можна розшифрувати як application programming interface, або інтерфейс програмування додатків – метод отримання даних запитів. У старих калькуляторах під API можна розуміти математичний API: пристрій з числами і оператором для обчислення результату. На рівні фізики під API можна розглядати популярну в США іграшку Rock ‘Em Sock ‘Em Robot: ви смикаєте важелі, а роботи б’ються.

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

Веб API

В інтернеті API беруть дві форми: клієнтські і серверні.

Клієнтські API. У специфікації HTML5 є кілька API, якими можуть користуватися розробники, наприклад, Fullscreen і Dialog API. Доступ до них здійснюється через JS, дані інтерфейси розширюють функціонал браузера і замінюють стандартні додатки. Даний функціонал вплинув на веб-сайти під управлінням API, як на веб-додатків для комп’ютерів, так і для мобільних пристроїв.

Серверні API. Безліч компаній, що випускають власні API: приміром, у Netflix є API, що показує передплатникам безкоштовні фільми прямо під час пошуку. У мережі тисячі різних API: одні з них використовуються відкрито, інші ж тільки в корпоративних веб-сайтах. Всі дані доступні при запиті до сервера.

У цій статті зроблено акцент на другу форму.

Робота з веб API

У Google Maps є повноцінне API, побачити його можна, просто відкривши карту в браузері. Наприклад, адресна рядок нижче: https://www.google.ca/maps/@51.0890235,-114.0293939,12 z

… візьмемо моє поточне положення, місто Калгарі. Якщо змінити перші дві пари чисел після символу @ (тобто широту і довготу), то ми змінимо інформацію, запитану з Google Maps API, тим самим отримаємо зовсім інший результат.

В реальності веб-сайти роблять запити до API через JavaScript, PHP, Ruby або інший мову програмування. Більшість інтерфейсів повертають дані у форматі JSON, XML або HTML; безліч сайтів надають всі три варіанти. Деяким API потрібен унікальний ключ (з допомогою якого сервіс може відстежувати запити і використовувати їх), інших же навпаки ключ не потрібен. У деяких API хороша документація, в інших немає.

Один приклад: API OpenWeatherMap може приймати URL, в якому вказується місто і ключ: http://api.openweathermap.org/data/2.5/weather?q=Calgary&appid=91f05e4330f6e85cab273b8b1ad8bb71

Якщо вбити адреса вище в рядок браузера, то вам повернеться наступний код:

{«coord»: {«lon»:-114.09, «lat»:51.05}, «weather»:[{«id»:800, «main»:»Clear», «description»:»clear sky», «icon»:»01n»}], «base»:»cmc stations», «main»:{«temp»:281.645, «pressure»:868.29, «humidity»:70, «temp_min»:281.645, «temp_max»:281.645, «sea_level»:1028.59, «grnd_level»:868.29}, «wind»:{«speed»:1.07, «deg»:175.501}, «clouds»:{«all»:0}, «dt»:1462251211, «sys»:{«message»:0.0031, «country»:»CA», «sunrise»:1462277067, «sunset»:1462330973}, «id»:5913490, «name»:»Calgary», «cod»:200}

Як видно, дані в форматі JSON. У цій рядку міститься інформація про погоду на сьогодні для міста Калгарі. Звичайному користувачеві дані ніколи не будуть представлені у такому форматі: я б зробив запит через JS чи іншу мову програмування, ще краще разом з хелпер скриптом, який допоможе структурувати формат повернутих даних, а результат представив би з допомогою красивого семантичного HTML коду. API допомагають створювати більш функціональні сайти, що неможливо, якщо робити їх самому.

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

У наступних статтях я покажу безліч різних способів застосування API.