● У языка программирования, чтобы разные функции правильно взаимодействовали между собой. Каждая функция тут выступает «приложением», а API становится набором инструкций для правильного вызова этих функций.
● У операционной системы, чтобы программы могли извлекать из неё данные и при необходимости изменять настройки ОС. При разработке приложения для Windows, Linux или Android нужно знать API этой системы, чтобы работать с файлами и графикой.
● У веб-сервисов, чтобы другие веб-сервисы и программы могли к ним подключаться и работать совместно.
Веб-разработчики чаще всего сталкиваются именно с веб-API, поэтому дальше мы в большей степени будем говорить о нём. Но многое из сказанного справедливо для всех API в целом.
API называют интерфейсом потому, что это инструмент для взаимодействия. Так же, как кнопка — пользовательский интерфейс, так и API — интерфейс для программы, который общается с ней на «понятном языке».
На курсе Практикума «Фронтенд-разработчик» мы рассказываем, как использовать API в веб-разработке на реальных практических задачах, а также разрабатывать собственные API. Вводный курс доступен бесплатно.
При этом вам не нужно знать, как работает API-функция, которую вы вызываете. Она может быть очень сложной и содержать тысячи строк кода — а вы будете вызывать её всего одной и получать нужный результат.
Для своего веб-приложения тоже можно создать функции API — составить набор инструкций, по которым другие приложения смогут обращаться к вашему. Это нужно для того, чтобы с вашим сервисом можно было настроить интеграцию.
Конкретные функции полностью зависят от приложения, которое предоставляет API. Это может быть:
● отправка вам курса валют;
● авторизация вас в CRM-системе с возможностью добавлять, удалять и изменять информацию;
● проведение платежа через банковскую систему;
● распознавание голоса и перевод его в текст;
● перевод текста;
● получение информации об актуальных остатках товара.
Например, вам не нужно писать собственный сервис комментариев — можно найти подходящий, подключиться к нему по API и добавить к себе на сайт.
Либо представим, что у вас есть внутренняя CRM-система и вы хотите добавить к ней учёт рабочего времени. Можно разработать эту функцию самостоятельно, а можно найти сервис учёта, взять его API и подключить к своей CRM.
В конечном счете работа через API экономит время программистов и бюджет бизнеса на разработку.
Из этого преимущества вытекает дополнительное: использование API делает приложение безопаснее. Если ваша компания не специализируется на информационной безопасности, вам сложно будет создать безопасный инструмент для платежей или схему авторизации. Тут на помощь приходят API: их разработчики как раз заняты в первую очередь безопасностью, а вы можете использовать плоды их трудов и сосредоточиться на решении более важных для бизнеса задач.
Вызов API обычно прописан в документации к нему. Как правило, для вызова нужно отправить данные на сервер, адрес которого задан в виде URL.
Например, представим, что вы хотите добавить к себе на сайт Яндекс Карту. Подробно это описано в документации, а в общих чертах пример работы через API выглядит так:
<head>
<script src="https://api-maps.yandex.ru/2.1/?apikey=ваш API-ключ&lang=ru_RU" type="text/javascript">
</script>
</head>
API-ключ нужно получать отдельно, так как API Яндекс Карт закрытый.
<body>
<div id="map" style="width: 600px; height: 400px"></div>
</body>
<script type="text/javascript">
// Функция ymaps.ready() будет вызвана, когда
// загрузятся все компоненты API, а также когда будет готово DOM-дерево.
ymaps.ready(init);
function init(){
// Создание карты.
var myMap = new ymaps.Map("map", {
// Координаты центра карты.
// Порядок по умолчанию: «широта, долгота».
// Чтобы не определять координаты центра карты вручную,
// воспользуйтесь инструментом Определение координат.
center: [55.76, 37.64],
// Уровень масштабирования. Допустимые значения:
// от 0 (весь мир) до 19.
zoom: 7
});
}
</script>
Ещё один вариант запроса — информация об актуальных ценах в Яндекс Такси. Запрос будет выглядеть так:
GET https://taxi-routeinfo.taxi.yandex.net/taxi_info?rll=37.589569560,55.733780~37,56&clid=t...3&apikey=q...3
А ответ на него — так:
{
"currency": "RUB",
"distance": 61529.771101536542,
"options": [
{
"class_level": 50,
"class_name": "econom",
"class_text": "Эконом",
"min_price": 495,
"price": 10945,
"price_text": "10945 руб.",
"waiting_time": 203.98798614740372
}
],
"time": 3816.9397069215775
}
Внутрь запроса часто нужно передавать переменные. Их можно вписать в запрос статично, а можно получать от сервера или пользователя. Например, можно написать код так, чтобы пользователь вбивал какие-то данные, они сохранялись в переменные и затем вставлялись в вызов API. Всё зависит от ваших потребностей и задач.
Есть API посложнее, с несколькими функциями. Например, API для получения курса валют Центробанка на сегодня подключается по ссылке https://www.cbr-xml-daily.ru/daily.xml. Для его отображения, например, на php, нужно написать следующий код:
<?php
function CBR_XML_Daily_Ru() {
static $rates;
if ($rates === null) {
$rates = json_decode(file_get_contents('https://www.cbr-xml-daily.ru/daily_json.js'));
}
return $rates;
}
$data = CBR_XML_Daily_Ru();
echo "Обменный курс USD по ЦБ РФ на сегодня: {$data->Valute->USD->Value}\n";
Есть и ещё более сложные API, со множеством функций и возможностей. К ним относятся API банков, облаков и сложных сервисов вроде Яндекс Карт. Программный интерфейс в таком случае публикуют на сайте либо высылают разработчикам по запросу.
Примеры страниц подобных API:
● API Сбера для интеграции с банком и управления бизнесом,
● API HeadHunter для прямой работы с вакансиями.
Часто такие API закрытые: либо платные, либо подключаются только по авторизации.
OpenAPI. Когда мы берём сторонний веб-API, его нужно ещё интегрировать в нашу программу. Часто это утомительная работа, которую можно автоматизировать. Для этого существует OpenAPI — спецификация, которая формализует написание API и позволяет автоматически генерировать API и интеграции для работы с большим количеством сторонних приложений.
Использование протокола gRCP. В основном сейчас для обмена запросами по веб-API используют XML/JSON поверх протокола HTTP 1.1. Но у такой схемы есть проблема: она требует чётко фиксированных запросов, которые не очень удобно прописывать в коде. Кроме того, запросы XML/JSON достаточно тяжёлые и нагружают сеть.
Чтобы решить эти проблемы, сейчас активно внедряют новый протокол — gRCP. Он позволяет обмениваться более лёгкими запросами и составлять для обмена более простые API. Пока это не стало стандартом, но gRPC уже можно использовать, если подключить специальные библиотеки.
Читать также: