Browse Source

Загрузить файлы 'Лекции/API'

u20kovalev_den 3 weeks ago
parent
commit
f6d2c2e280

BIN
Лекции/API/api1.png


BIN
Лекции/API/api2.png


+ 27 - 0
Лекции/API/Шайдуко_API.md

@@ -0,0 +1,27 @@
+# API как контракт взаимодействия программных систем
+
+**API (Application Programming Interface)** представляет собой формализованный контракт, определяющий правила и способы взаимодействия между программными компонентами или распределёнными системами. С инженерной точки зрения API абстрагирует внутреннюю реализацию сервиса и предоставляет строго определённый набор операций, данных и ограничений, что позволяет системам развиваться независимо друг от друга без нарушения совместимости.
+
+В современной архитектуре ПО API является фундаментом микросервисного подхода, клиент-серверных приложений и интеграционных платформ. Разработчик, работающий с API, оперирует не реализацией, а спецификацией: эндпоинтами, HTTP-методами, форматами данных и кодами ответов. Это снижает связанность компонентов и повышает масштабируемость системы.
+
+![Alt](api1.png)
+
+Наиболее распространённым архитектурным стилем является REST (Representational State Transfer). В REST API каждая сущность представляется как ресурс, доступный по уникальному URI, а операции над ним выполняются стандартными HTTP-методами: GET, POST, PUT, DELETE. Такой подход упрощает понимание интерфейса и делает его совместимым с инфраструктурой веба (кеширование, прокси, балансировщики).
+
+Важным аспектом проектирования API является контракт данных. Как правило, для сериализации используется JSON, реже XML или бинарные форматы (Protocol Buffers, Avro). Ошибки в структуре ответа или неявные изменения полей приводят к нарушению обратной совместимости, поэтому в промышленной разработке применяется версионирование API — через URI (/v1/, /v2/) или заголовки запроса.
+
+## Таблица 1. Ключевые характеристики качественного API
+| Характеристика  | Описание                                       | Инженерная ценность              |
+| --------------- | ---------------------------------------------- | -------------------------------- |
+| Явный контракт  | Документированная структура запросов и ответов | Снижение ошибок интеграции       |
+| Стабильность    | Минимизация breaking changes                   | Долгосрочная поддержка клиентов  |
+| Идемпотентность | Повторяемость операций без побочных эффектов   | Надёжность распределённых систем |
+| Наблюдаемость   | Логирование, метрики, коды ошибок              | Упрощение диагностики            |
+
+Документация играет критическую роль в жизненном цикле API. Инструменты вроде OpenAPI (Swagger) позволяют описывать интерфейс в машиночитаемом виде, автоматически генерировать документацию, клиентские SDK и тесты. Для разработчика API это становится частью CI/CD-конвейера и повышает общее качество DevEx.
+
+![Alt](api2.png)
+
+С точки зрения безопасности API требует строгого контроля доступа. На практике применяются API-ключи, OAuth 2.0, JWT-токены, а также ограничения по частоте запросов (rate limiting). Эти механизмы защищают сервис от несанкционированного доступа и перегрузки.
+
+Таким образом, API — это не просто технический интерфейс, а стратегический элемент архитектуры программного продукта. Грамотно спроектированный API снижает стоимость поддержки, ускоряет разработку и позволяет системе эволюционировать без потери устойчивости.

+ 20 - 0
Лекции/API/Шайдуко_Вопросы.md

@@ -0,0 +1,20 @@
+# Вопросы и ответы
+Что такое API с инженерной точки зрения?
+
+API — это формализованный контракт, определяющий правила взаимодействия между программными компонентами без раскрытия их внутренней реализации.
+
+В чём заключается основная идея архитектурного стиля REST?
+
+REST основан на представлении данных в виде ресурсов, доступных по URI, и использовании стандартных HTTP-методов для операций над ними.
+
+Зачем используется версионирование API?
+
+Версионирование API применяется для сохранения обратной совместимости и предотвращения нарушения работы существующих клиентов.
+
+Какую роль играет документация в жизненном цикле API?
+
+Документация API обеспечивает единое понимание контракта и позволяет автоматизировать генерацию клиентских библиотек и тестов.
+
+Почему безопасность является критически важным аспектом API?
+
+Безопасность API необходима для защиты сервисов от несанкционированного доступа, утечек данных и чрезмерной нагрузки.