API: что такое и виды

API (Application Programming Interface) — это интерфейс, через который одна программа взаимодействует с другой по заранее оговорённому контракту.

Зачем нужно

API позволяет клиентскому коду получать данные и вызывать функциональность сервера без знания о его внутреннем устройстве. Благодаря стандартизированному интерфейсу несколько команд могут разрабатывать фронтенд и бэкенд независимо. Понимание видов API помогает выбрать правильный инструмент для конкретной задачи.

Где используется

  • Интеграция фронтенда с бэкендом (браузерные запросы через fetch/XHR)
  • Микросервисная коммуникация (gRPC, REST между сервисами)
  • Публичные платформы: GitHub API, Stripe API, Google Maps API
  • Мобильные приложения, получающие данные с сервера
  • Webhooks — API «наоборот», когда сервер сам уведомляет клиента

Виды API

По протоколу/стилю

Вид Протокол Формат Применение
REST HTTP JSON, XML Веб, мобайл
GraphQL HTTP JSON Гибкие запросы
gRPC HTTP/2 Protobuf Микросервисы
WebSocket WS бинарный/текст Real-time
SOAP HTTP XML Enterprise, legacy

По доступности

  • Public API — открыты для внешних разработчиков (Twitter, GitHub)
  • Private API — только внутри компании
  • Partner API — доступ по соглашению, например платёжные шлюзы

Контракт API

# Запрос
GET /api/users/42 HTTP/1.1
Host: api.example.com
Authorization: Bearer <token>
Accept: application/json

# Ответ
HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 42,
  "name": "Антон",
  "email": "anton@example.com"
}

Browser API vs Web API

// Browser API — встроен в браузер, не требует сети
const storage = localStorage.getItem('token');
const el = document.querySelector('#app');
navigator.geolocation.getCurrentPosition(cb);

// Web API — запрос на удалённый сервер
const response = await fetch('https://api.example.com/users');
const users = await response.json();

Частые ошибки

  • Путаница между Browser API (DOM, localStorage) и Web API (HTTP-запросы)
  • Отсутствие версионирования — сломанный контракт ломает всех клиентов
  • Возврат внутренних деталей реализации (имена таблиц БД, stack trace)
  • Нет документации — другие разработчики не знают, как использовать API

Связанные темы

Ресурсы