Swagger
Swagger — набор инструментов для создания, документирования и тестирования RESTful API. Основой Swagger является формат OpenAPI, который позволяет описывать API на уровне спецификаций.
Зачем нужен?
- Автоматическая генерация интерактивной документации
- Тестирование API в реальном времени
- Единый стандарт (OpenAPI) для совместимости между различными системами и командами
- Автоматизация создания клиентских SDK и серверных частей
Возможности
- Интеграция с инструментами для авто-тестирования (Postman и др.), создание тестов на основе спецификаций API
- Поддержка версионирования спецификаций API
- Широкая экосистема: множество плагинов, инструментов и расширений для различных нужд
- Добавление информации о безопасности API, включая поддержку OAuth2, JWT и других механизмов аутентификации и авторизации
Из чего состоит?
Swagger Core
Ядро Swagger, программная реализация спецификации OpenAPI 3.0.
Swagger Editor
Веб-инструмент для создания и редактирования спецификаций OpenAPI:
- Подсветка синтаксиса и автодополнение
- Встроенная валидация спецификаций
- Работа с YAML и JSON форматами
- Экспорт / импорт спецификаций
Swagger UI
Интерактивная документация, которая генерируется на основе спецификаций API:
- Тестирование API вызовов
- Поддержка авторизации (Bearer, Basic Auth, API Key)
- Визуальное отображение структуры API
- Встроенная поддержка для описания моделей данных
Swagger Codegen
Инструмент для автоматической генерации клиентских SDK и серверных частей на основе спецификаций OpenAPI:
- Поддержка разных языков программирования и фреймворков (Java, Python, C#, Ruby и др.)
- Генерация клиентских библиотек, серверных стубов и документации
- Настраиваемые шаблоны для генерации кода
- Интеграция с CI/CD процессами
С чего начать работу со Swagger?
- Создать спецификацию API в Swagger Editor
- Сохранить в формате JSON или YAML
- Открыть в Swagger UI, чтобы визуализировать и тестировать API
- Использовать Swagger Codegen для генерации кода клиента или сервера
Подходы к созданию API
Code First
Спецификации API генерируются на основе кода. Используется:
- Когда необходимо быстро создать API
- Для создания прототипов и экспериментальных проектов
- Когда добавляются API к уже существующим кодовым базам
Преимущества
- Легко и быстро внедрить, не требует первоначального знания спецификаций
Недостатки
- Документация может отставать от кода, сложнее поддерживать в долгосрочной перспективе
Пример реализации
- Swagger annotations (Java) / атрибуты (C#): добавление документации в код
- Swagger-Core (Java)/ Swashbuckle (C#): генерация спецификаций
Contract First (API First)
Спецификации создаются до написания кода. Используется:
- Для обеспечения согласованности и стандартизации
- Когда несколько команд работают над разными частями системы
- Для детальной проработки API до начала разработки
Преимущества
- Высокая согласованность и понятность, легче поддерживать
Недостатки
- Требует больше усилий на этапе проектирования
Пример реализации
- Editor: создание спецификаций API в формате OpenAPI
- Codegen: генерация серверных шаблонов и клиентских библиотек по спецификациям