Что такое API простыми словами: как сайты и приложения договариваются между собой
9 мин чтения
Что такое API простыми словами: как сайты и приложения договариваются между собой

Что такое API простыми словами: как сайты и приложения договариваются между собой

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

API (Application Programming Interface, программный интерфейс приложения) — это набор правил, по которым одна программа обращается к другой и получает от неё данные или действие. Через API сайт узнаёт у банка, прошла ли оплата, у службы доставки — сколько стоит везти посылку, у сервиса погоды — какая температура в городе. Человек с API напрямую не работает: он видит на экране только результат обмена.

Как работает API: официант между залом и кухней

API работает как официант в ресторане. Вы сидите в зале и не заходите на кухню: вы выбираете блюдо из меню, официант передаёт заказ поварам и приносит готовую тарелку. Как устроена кухня, кто и на какой плите готовит — вас не касается.

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

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

Где API работает вокруг вас каждый день

На обычном сайте небольшой компании API задействован в пяти-семи местах, и почти все они чужие. Оплата картой, расчёт доставки, карта в контактах, вход через Госуслуги, СМС с кодом, погода в приложении — это запросы к другим компаниям, а не работа вашего сервера.

Сценарий Чей API отвечает Что ломается, если API не отвечает
Оплата картой на сайте Платёжный сервис или банк (например, ЮKassa) Кнопка «Оплатить» крутится или выдаёт ошибку, заказы остаются без оплаты
Расчёт доставки в корзине Служба доставки (СДЭК, Почта России, Яндекс Доставка) Корзина не считает стоимость, покупатель не может оформить заказ
Карта в разделе «Контакты» Картографический сервис (Яндекс Карты, 2ГИС) Вместо карты серый прямоугольник
Вход через Госуслуги, VK ID, Яндекс ID Сервис авторизации Кнопка входа не срабатывает, вход по паролю обычно остаётся
СМС с кодом подтверждения СМС-шлюз Код не приходит, регистрация невозможна
Погода или курс валют в приложении Поставщик данных (Яндекс Погода, Банк России) Пустой блок или вчерашние цифры
Заявка с формы уходит в CRM Ваша CRM (система учёта клиентов: Битрикс24, amoCRM) Форма пишет «отправлено», но менеджер заявку не видит

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

Кнопка «Войти через Госуслуги» при этом не передаёт сайту ваш пароль: сайт обращается к API ЕСИА (Единой системы идентификации и аутентификации) и получает только подтверждение личности и разрешённые данные. Так же работают кнопки VK ID и Яндекс ID: официант приносит только то, что есть в меню.

Чем API отличается от сайта и от «интеграции»

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

  Сайт API Интеграция
Кто пользуется Человек через браузер Другая программа Бизнес получает результат, не замечая механики
Что видно Страницы, кнопки, картинки Адреса запросов и формат ответа в документации «Заявки сами попадают в CRM»
Как выглядит поломка Страница не открывается, видна ошибка Не работает одна функция, остальное в порядке Данные перестают перетекать, часто без ошибок на экране

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

Рядом с API часто звучит слово «вебхук» (webhook). Это обмен в обратную сторону: не сайт спрашивает сервис, а сервис сам стучится на адрес сайта, когда что-то произошло. По документации ЮKassa, о прошедшем платеже сервис присылает сайту уведомление «payment.succeeded», сайт должен ответить кодом HTTP 200 («принял»), иначе ЮKassa повторяет попытки в течение 24 часов. Если сайт сутки не отвечал, часть оплаченных заказов останется в вашей системе «неоплаченной».

Что такое ключ API и почему его нельзя показывать

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

В ресторанной аналогии ключ — клубная карта, на которую официант записывает заказы: без неё не обслужат, а с ней всё съеденное запишут на ваш счёт. По справочнику MDN, ключ нужен, чтобы владелец API знал, кто им пользуется, и мог отозвать доступ при злоупотреблении. Получают ключ в личном кабинете сервиса: по документации API Яндекс Погоды, ключ появляется в аккаунте после выбора тарифа и его оплаты.

Тот, кто получил ваш ключ, может тратить ваш баланс на СМС-шлюзе, рассылать спам от имени компании или читать данные клиентов в CRM. Чаще всего ключи утекают не через взлом, а через быт: скриншот настроек в рабочем чате, ключ в письме подрядчику, копия кода сайта в открытом репозитории.

Если ключ засветился

Не надейтесь, что «никто не заметил»: зайдите в кабинет сервиса, выпустите новый ключ и передайте его разработчику — старый перестанет работать. Ключ хранится на сервере сайта, а не в коде страницы, который видит любой посетитель. Исключение — ключи, специально сделанные публичными и привязанные к домену, например ключи карт: такой ключ виден всем, но работает только на вашем сайте.

Почему сайт открывается, а оплата или форма — нет

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

Причины делятся на три группы. Первая — упал сам чужой сервис: авария, перегрузка, плановые работы. Вторая — сломалась связка на вашей стороне: истёк ключ, кончился баланс СМС-шлюза, исчерпан месячный лимит запросов, разработчик изменил поля формы, и CRM перестала их понимать. Третья — сервис отключил старую версию API: сайт годами работал сам по себе, а письма о переходе на новую версию приходили на почту уволившегося сотрудника.

Внешне все три группы выглядят похоже. Кнопка долго крутится — сайт ждёт ответа и не дожидается. Ошибка 502 или 504 — промежуточный сервер не получил ответ от следующего звена; эти коды разобраны в статьях про ошибку 502 Bad Gateway и про коды ответа HTTP. Сообщение «Сервис временно недоступен» чаще всего пишет ваш же сайт, когда не смог достучаться до чужого API.

Как понять, что проблема в API, без консоли и программиста

Достаточно трёх наблюдений: открывается ли страница, какая именно функция не работает и что пишет страница статуса сервиса-поставщика. Если страница открывается, а не работает одна функция, завязанная на внешний сервис, проблема почти наверняка в API или в связке с ним.

Симптом Вероятная причина Что делать
Сайт открывается, кнопка «Оплатить» крутится или выдаёт ошибку Не отвечает API платёжного сервиса или сбилась настройка на вашей стороне Открыть страницу статуса платёжного сервиса; проверить в его кабинете баланс и ключ
Форма пишет «отправлено», заявок в CRM нет Обрыв между сайтом и CRM: ключ, лимит, изменённые поля Отправить тестовую заявку; посмотреть журнал интеграции в CRM
Карта или виджет — пустой серый блок Ключ виджета не оплачен, домен не привязан или сервис недоступен Проверить кабинет сервиса карт; открыть страницу с выключенным блокировщиком рекламы
Работало годами, вдруг перестало без изменений на сайте Сервис отключил старую версию API или изменил формат ответа Найти письма сервиса о новой версии; поручить разработчику обновить интеграцию
Не работает у одного клиента, у остальных всё в порядке Не API, а устройство, браузер или сеть клиента Попросить повторить с другого устройства или через мобильный интернет

Самая коварная строка таблицы — вторая: заявки перестали доходить до CRM, а на сайте никаких признаков. Поэтому раз в неделю полезно отправлять тестовую заявку самому себе. Страница статуса есть у большинства крупных сервисов: она находится поиском по запросу «название сервиса статус» и показывает, идёт ли сейчас авария.

Как следить за чужим API автоматически

Тестовая заявка показывает состояние только на момент проверки. Если оплата или CRM для вас критичны, нужен постоянный мониторинг. Пруфен раз в 2 минуты открывает заданный адрес из 20 городов и пишет вам в Email, Telegram или Макс, если адрес перестал отвечать, и ещё раз — когда снова отвечает. HTTP-проверку можно поставить не только на главную страницу, а на адрес API-метода, от которого зависит ваш сайт: например, на адрес, по которому сайт проверяет статус платежа или передаёт заявки в CRM. Проверка фиксирует код ответа и время, допустимые коды настраиваются. Если важно, чтобы API отвечал не просто «200», а осмысленно, добавьте проверку «Наличие контента»: она ищет в ответе заданный текст, например «"status":"ok"». У Пруфена есть и собственный REST API, а мониторинг эндпоинтов целиком разобран в статье про мониторинг API.

Памятка: что запомнить об API
  • API — правила обмена данными между программами; сайт — для людей, API — для программ.
  • Оплата, доставка, карта, вход через Госуслуги, СМС-код — это чужие API на вашем сайте.
  • Если сайт открывается, а одна функция не работает — ищите проблему в API.
  • Интеграция может сломаться без ошибок на экране: раз в неделю отправляйте тестовую заявку.
  • Ключ API — как клубная карта со счётом: утёк — сразу выпускайте новый.
  • «Сделаем через API» означает: у сервиса есть программный вход, напишем код под него.
  • У крупных сервисов есть страница статуса — смотрите её до звонка разработчику.

Частые вопросы

API — это программа или сайт? Ни то ни другое. API — договорённость о том, как к программе обращаться: по какому адресу, что можно попросить и в каком виде придёт ответ. Сама программа стоит за этой дверью, а сайт — соседняя дверь для людей. У банка могут быть приложение, сайт и API, и все три ведут к одной системе.

Нужен ли API моему сайту, если я ничего не программирую? Он у вас уже есть. Счётчик посещений, форма с отправкой в почту или CRM, кнопка оплаты и карта проезда работают через API соответствующих сервисов. Вопрос не в том, нужен ли он, а в том, знаете ли вы, какие внешние сервисы держат ваш сайт на плаву.

Что значат слова REST и JSON, которые говорит разработчик? REST — самый распространённый способ устроить API: программа отправляет обычные веб-запросы на определённые адреса, почти как браузер открывает страницы, только вместо страницы получает данные. JSON — текстовый формат этих данных: пары «название — значение», например «"status": "paid"». Программы читают его легко, а человек при желании тоже разберёт.

API всегда платный? Нет, но бесплатным он бывает до определённого объёма. Многие сервисы дают бесплатный лимит запросов, а сверх него берут плату за запросы или продают доступ по тарифу — так устроен, например, API Яндекс Погоды. Платёжные сервисы обычно не берут денег за сам API, а зарабатывают на комиссии с платежей.

Была ли статья полезна?

Начните мониторинг прямо сейчас

Бесплатный тариф — до 5 проверок. 150 ₽ на баланс при регистрации.

Создать аккаунт