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
Связанные темы
- _MOC Сеть
- REST API
- HTTP-методы -- GET, POST, PUT, DELETE, PATCH
- GraphQL -- основы и отличия от REST
- gRPC -- обзор
- Протокол HTTP -- основы