🔌 API и взаимодействие сервисов¶
API — контракт, через который программы обмениваются данными и командами: клиент шлёт запрос, сервер возвращает ответ.
Status: Draft
1. HTTP / REST
REST — стиль HTTP API: работа с ресурсами по URL, глаголы HTTP, обычно JSON.
| Метод | Типично |
|---|---|
GET |
прочитать |
POST |
создать |
PUT / PATCH |
заменить / частично обновить |
DELETE |
удалить |
Коды: 200 OK, 201 Created, 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 500 Server Error.
Пример:
GET /api/v1/users/42 HTTP/1.1
Host: api.example.com
Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json
{"id": 42, "name": "Ada"}
Рядом по смыслу (не обязательно REST): SOAP, GraphQL, gRPC — другие контракты поверх сети.
2. Auth
| Способ | Идея |
|---|---|
| API key | Секрет в header/query |
| Basic | login:password (Base64), лучше только по TLS |
| Bearer JWT | Токен в Authorization: Bearer … |
| OAuth 2 | Выдача токенов через authorization server |
Без TLS секреты в transit видны — для прод API почти всегда HTTPS.
3. Вызов из CLI
curl — базовый инструмент ops:
curl -sS -X GET \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json" \
https://api.example.com/api/v1/users/42
Параметры запроса: query (?page=1), path (/users/42), headers, body (JSON для POST/PUT).
Postman (и аналоги) — GUI: коллекции, environments, простые тесты. Удобно для отладки; в автоматизации чаще curl/httpie/скрипты.
4. Sync vs async
| Sync (HTTP API) | Async (очередь / брокер) | |
|---|---|---|
| Модель | запрос → ждём ответ | отправили событие → обработают позже |
| Связность | клиент знает URL сервиса | через топик/очередь |
| Типично | CRUD, admin API | пайплайны, пики нагрузки |
Оба способа — «взаимодействие сервисов»; брокеры (Kafka и др.) — отдельный раздел.
Вопросы
В разработке..