Программирование  •  08 июля 2022  •  5 мин чтения

Что такое API и что о нём нужно знать веб-разработчику

При разработке программ и веб-сервисов часто нужно обращаться в сторонние сервисы: получить актуальные данные, добавить в своё приложение уже разработанную кем-то функцию, настроить обмен данных с облачным сервером. Для таких обращений необходимо использовать API.
Сергей Савельев
Яндекс Практикум
Наставник на факультете Java, руководитель и разработчик в Яндекс Маркете

Что такое API и как он работает

API — это программный интерфейс приложений, набор инструкций, который позволяет разным приложениям общаться между собой. API может быть:

● У языка программирования, чтобы разные функции правильно взаимодействовали между собой. Каждая функция тут выступает «приложением», а API становится набором инструкций для правильного вызова этих функций.

● У операционной системы, чтобы программы могли извлекать из неё данные и при необходимости изменять настройки ОС. При разработке приложения для Windows, Linux или Android нужно знать API этой системы, чтобы работать с файлами и графикой.

● У веб-сервисов, чтобы другие веб-сервисы и программы могли к ним подключаться и работать совместно.

Веб-разработчики чаще всего сталкиваются именно с веб-API, поэтому дальше мы в большей степени будем говорить о нём. Но многое из сказанного справедливо для всех API в целом.

API называют интерфейсом потому, что это инструмент для взаимодействия. Так же, как кнопка — пользовательский интерфейс, так и API — интерфейс для программы, который общается с ней на «понятном языке».

Использование API

Принцип работы API прост:

  1. Сторонний разработчик пишет какое-то своё приложение, функцию, операционную систему.
  2. Он составляет API — набор правил, на основе которых другие разработчики могут использовать его разработку тем или иным способом.
  3. Вы получаете этот API — он либо лежит в публичном доступе, либо открывается по запросу для клиентов.
  4. Вы вызываете API внутри своего приложения и пользуетесь нужными вам функциями.

При этом вам не нужно знать, как работает API-функция, которую вы вызываете. Она может быть очень сложной и содержать тысячи строк кода — а вы будете вызывать её всего одной и получать нужный результат.

Для своего веб-приложения тоже можно создать функции API — составить набор инструкций, по которым другие приложения смогут обращаться к вашему. Это нужно для того, чтобы с вашим сервисом можно было настроить интеграцию.

Функции API: что можно делать с его помощью

Базовые функции API — это получить информацию, отправить её, изменить или удалить. Ваше приложение для этого отправляет запрос в стороннее, а то, в свою очередь, формирует ответ.

Конкретные функции полностью зависят от приложения, которое предоставляет API. Это может быть:

● отправка вам курса валют;

● авторизация вас в CRM-системе с возможностью добавлять, удалять и изменять информацию;

● проведение платежа через банковскую систему;

● распознавание голоса и перевод его в текст;

● перевод текста;

● получение информации об актуальных остатках товара.

Преимущества работы с API

По сути, преимущество одно: API позволяет не разрабатывать свои функции, а пользоваться уже разработанными. Это как с библиотеками в языках программирования: вы можете не писать свою функцию сортировки, а подключить библиотеку и пользоваться уже готовым, настроенным инструментом.

Например, вам не нужно писать собственный сервис комментариев — можно найти подходящий, подключиться к нему по API и добавить к себе на сайт.

Либо представим, что у вас есть внутренняя CRM-система и вы хотите добавить к ней учёт рабочего времени. Можно разработать эту функцию самостоятельно, а можно найти сервис учёта, взять его API и подключить к своей CRM.

В конечном счете работа через API экономит время программистов и бюджет бизнеса на разработку.

Из этого преимущества вытекает дополнительное: использование API делает приложение безопаснее. Если ваша компания не специализируется на информационной безопасности, вам сложно будет создать безопасный инструмент для платежей или схему авторизации. Тут на помощь приходят API: их разработчики как раз заняты в первую очередь безопасностью, а вы можете использовать плоды их трудов и сосредоточиться на решении более важных для бизнеса задач.

Как вызвать API и как с ним работать

Вызов API обычно прописан в документации к этому API. Как правило, для вызова нужно отправить данные на сервер, адрес которого задан в виде URL.

Например, представим, что вы хотите добавить к себе на сайт Яндекс Карту. Подробно это описано в документации, а в общих чертах пример работы через API выглядит так:

  1. Вы подключаете карту в заголовок вашей страницы:

<head>

<script src="https://api-maps.yandex.ru/2.1/?apikey=ваш API-ключ&lang=ru_RU" type="text/javascript">

</script>

</head>

API-ключ нужно получать отдельно, так как API Яндекс Карт закрытый.

  1. Создаёте контейнер, в котором будет карта:

<body>

<div id="map" style="width: 600px; height: 400px"></div>

</body>

  1. Добавляете код карты:

<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>

По сути, вызов API происходит только в самом в первом пункте. Дальше мы берём уже вызванный API и используем функции, которые он даёт.

Ещё один вариант запроса — информация об актуальных ценах в Яндекс Такси. Запрос будет выглядеть так:

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 зависит от языка программирования, который мы используем. Например, в Python это будет функция request.

Внутрь запроса часто нужно передавать переменные. Их можно вписать в запрос статично, а можно получать от сервера или пользователя. Например, можно написать код так, чтобы пользователь вбивал какие-то данные, они сохранялись в переменные и затем вставлялись в вызов API. Всё зависит от ваших потребностей и задач.

На курсе Практикума «Веб-разработчик» мы рассказываем, как использовать API в веб-разработке на реальных практических задачах, а также разрабатывать собственные API. Вводный курс доступен бесплатно.

Примеры использования API

API бывают совсем простыми. Например, API «http.cat» позволяет получать случайные картинки с котиками для иллюстраций страниц ошибок на вашем сайте:
Этот API настолько простой, что его можно вызывать прямо в браузере, набрав в строке адреса «https://http.cat/ <номер ошибки>».

Есть 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 Сбера для интеграции с банком и управления бизнесом,

API HeadHunter для прямой работы с вакансиями.

Часто такие API закрытые: либо платные, либо подключаются только по авторизации.

Особенности современного API

REST API. Сам по себе веб-API можно составить как угодно. Но для удобства разработчиков существует REST API — определённый набор стандартов по составлению API с помощью протокола HTTP. Этот набор правил позволяет унифицировать API и сделать их понятными и читабельными.

OpenAPI. Когда мы берём сторонний веб-API, его нужно ещё интегрировать в нашу программу. Часто это утомительная работа, которую можно автоматизировать. Для этого существует OpenAPI — спецификация, которая формализует написание API и позволяет автоматически генерировать API и интеграции для работы с большим количеством сторонних приложений.

Использование протокола gRCP. В основном сейчас для обмена запросами по веб-API используют XML/JSON поверх протокола HTTP 1.1. Но у такой схемы есть проблема: она требует чётко фиксированных запросов, которые не очень удобно прописывать в коде. Кроме того, запросы XML/JSON достаточно тяжёлые и нагружают сеть.

Чтобы решить эти проблемы, сейчас активно внедряют новый протокол — gRCP. Он позволяет обмениваться более лёгкими запросами и составлять для обмена более простые API. Пока это не стало стандартом, но gRPC уже можно использовать, если подключить специальные библиотеки.

Поделиться 
Thu Sep 08 2022 20:26:52 GMT+0300 (Moscow Standard Time)