Короткий ответ
API — формальный контракт взаимодействия (методы, форматы данных, ошибки); явные границы нужны, чтобы сервисы могли меняться внутри независимо, не ломая друг друга.
Как это работает подробнее
Контракт описывает входы/выходы, не детали реализации; потребитель зависит от контракта, а не от кода.
Пример кода
config.yaml
paths:
/orders/{id}:
get:
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
id: {type: integer}
status: {type: string}Что использовать на практике
- Практика. Используют схемы (OpenAPI, protobuf) для документирования и валидации; изменения проводят через версионирование или обратно совместимые поля.
Подводные камни
- Риск. Отсутствие формального контракта («договорились на словах»), прямой доступ к БД другого сервиса вместо вызова его API.