API
API - Application Programming Interface, что значит программный интерфейс приложения
- «приложение» относится к любому ПО с определенной функцией
- Интерфейс можно рассматривать как сервисный контракт между двумя приложениями. Этот контракт определяет, как они взаимодействуют друг с другом, используя запросы и ответы
- Документация API содержит информацию о том, как разработчики должны структурировать эти запросы и ответы.
Виды API
- REST API
- gRPC
- GraphQL
- Вебхуки Webhook
- SOAP
- ESB
- EDA
- EDI - Electroinic Data Interchange
- Server Side Events SSE
- AMQP
- MQTT
- WebSocket
Patterns
- Подходы к проектированию
- API gateway
- Стратегии повторов при сбоях Rerty Policy
TODO
https://github.com/Microsoft/api-guidelines/blob/master/Guidelines.md https://habr.com/ru/post/503284/ https://habr.com/ru/post/447322/ https://www.gov.uk/guidance/gds-api-technical-and-data-standards https://www.gov.uk/guidance/setting-api-service-levels
SLI, SLA
- request latency
- system throughput
- availability and downtime
- When designing a low-availability API, consider the use of HTTP 202 responses. For example, to indicate that the API has accepted a request but needs to wait to take further action
Versioning
- Необходимо для поддержки Обратной совместимости — это свойство всей системы API быть стабильной во времени. Это значит следующее: код, написанный разработчиками с использованием вашего API, продолжает работать функционально корректно в течение длительного времени.
- Варианты
- Header
- Query
- Управление версиями через универсальные коды ресурсов (URI)
- Версия вашего приложения
- SemVer
- Первая цифра (мажорная версия) увеличивается при обратно несовместимых изменениях в API
- Вторая цифра (минорная версия) увеличивается при добавлении новой функциональности с сохранением обратной совместимости
- Третья цифра (патч) увеличивается при выпуске новых версий, содержащих только исправление ошибок
- Then you can decide between implementing both versions of the service simultaneously within the same service instance, or deploying different instances that each handle a version of the API.
- A good approach for this is the Mediator pattern (for example, MediatR library) to decouple the different implementation versions into independent handlers.
Security
Документирование
- EDA
- REST
- Почему машино читаемый формат, а не Word:
- трансформация форматов
- Search and Discovery
- Sharing
- Aggregation
- Code Generation (server, client)
- Mock
- Monitoring
- проверка качества\безопасности описания АПИ
- Json Schema
- TODO Курс по документированию REST API
- Шаблон описания
- TODO API Spec Trends
- SOAP
- Top API design tools