Що таке веб API

499

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

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.