API
API (Application Programming Interface) — способ одной программы говорить с другой. В контексте веба обычно = HTTP-эндпоинты, которые принимают запросы и отдают JSON/XML/... В широком смысле — любой контракт между кодом (SDK, syscalls, библиотечные функции).
Типы веб-API
| Стиль | Формат | Транспорт |
|---|---|---|
| REST | JSON/XML | HTTP |
| GraphQL | JSON | HTTP POST |
| SOAP | XML | HTTP/SMTP/JMS |
| JSON-RPC | JSON | HTTP/WS |
| XML-RPC | XML | HTTP |
| gRPC | protobuf | HTTP/2 |
| Webhooks | JSON | HTTP (обратный) |
REST-подобный пример
GET /api/users → список
GET /api/users/42 → один
POST /api/users → создать (тело: JSON)
PUT /api/users/42 → заменить
PATCH /api/users/42 → частичное обновление
DELETE /api/users/42 → удалить
Аутентификация
- API-ключ в header (
X-API-Key) или query - Bearer token (OAuth, JWT)
- Basic Auth (устарел без TLS)
- mTLS — сертификаты для B2B
- HMAC-подпись — как AWS Signature v4
Форматы
- JSON — де-факто стандарт
- XML — legacy (SOAP, банкинг)
- Protobuf/MsgPack/CBOR — бинарные, компактные
- MessagePack — быстрее JSON
Документация
- OpenAPI (Swagger) — YAML/JSON описание REST API
- GraphQL schema — SDL, интроспекция встроена
- gRPC .proto
- AsyncAPI — для event-driven (Kafka, WS)
Rate limiting
Ограничение запросов. Ответ 429 Too Many Requests + Retry-After. Алгоритмы: token bucket, sliding window, fixed window.
Версионирование
- В URL:
/api/v1/users - В header:
Accept: application/vnd.api.v1+json - В query:
?version=1