Открыть сервисСервис

Swagger — спецификация и инструменты для REST API

Swagger — это набор открытых спецификаций и инструментов для описания, документирования и проектирования RESTful API. Первоначально создан в 2011 году как формат описания API, позже развился в экосистему, включающую язык описания OpenAPI Specification (OAS), инструменты генерации документации и вспомогательные утилиты для разработчиков. В 2015 году спецификация была передана Фонду OpenAPI Initiative, входящему в состав Linux Foundation, и переименована в OpenAPI Specification, тогда как название Swagger закрепилось за линейкой инструментов компании SmartBear Software.

История

Проект Swagger был запущен в 2011 году компанией Reverb Technologies (позже приобретённой SmartBear Software). Первая версия спецификации описывала структуру REST-сервисов в формате JSON и позволяла автоматически генерировать интерактивную документацию. Формат быстро получил распространение благодаря тому, что решал проблему «договорённости» между фронтендом и бэкендом: разработчики могли описать API в одном файле и на его основе строить клиентские библиотеки, тесты и документацию.

В 2014–2015 годах ведущие технологические компании, включая Google, Microsoft, IBM и Apigee, выступили с инициативой создания независимого открытого стандарта для описания API. В сентябре 2015 года инициатива была оформлена как OpenAPI Initiative под эгидой Linux Foundation. Спецификация Swagger 2.0 была преобразована в OpenAPI Specification 2.0, сохранив обратную совместимость. В 2017 году вышла версия OAS 3.0, а в 2021 году — OAS 3.1, полностью совместимая со стандартом JSON Schema.

OpenAPI Specification

OpenAPI Specification — это формат описания REST API в виде YAML- или JSON-документа. Он позволяет зафиксировать:

  • эндпоинты (URL-адреса) и HTTP-методы (GET, POST, PUT, DELETE и др.);
  • параметры запроса, заголовки, тела запросов и ответов;
  • схемы данных в формате JSON Schema;
  • аутентификацию (API-ключи, OAuth 2.0, HTTP-схемы);
  • контактную информацию, версию и лицензию API.

Файл спецификации обычно называют «контрактом API». Он служит единым источником истины: на его основе генерируются клиентские SDK, серверные заготовки, тесты и документация.

Инструменты Swagger

Под брендом Swagger выпускается ряд инструментов:

ИнструментНазначение
Swagger EditorБраузный редактор YAML/JSON-описаний с валидацией и предпросмотром
Swagger UIГенерация интерактивной веб-документации из файла спецификации
Swagger CodegenАвтогенерация клиентских и серверных заготовок (стабов) на десятках языков
Swagger InspectorИнструмент для тестирования и создания описаний API-запросов

Swagger UI, вероятно, наиболее узнаваемый компонент: он отображает эндпоинты в виде интерактивного каталога, где можно посмотреть схемы запросов и ответов и отправить тестовый запрос прямо из браузера. В российской практике Swagger UI широко используется в отечественных платформах: например, в API Госуслуг, в документации ряда сервисов Сбера, Яндекса и других крупных компаний.

Swagger и OpenAPI: различия

После разделения брендов возникла терминологическая путаница. Строго говоря:

  • OpenAPI Specification — открытый стандарт описания API (бывший Swagger Specification);
  • Swagger — семейство инструментов SmartBear, работающих с файлами OpenAPI.

Тем не менее в повседневной речи разработчиков «Swagger» нередко используется как синоним самой спецификации, что формально неверно, но широко распространено.

Применение

Swagger/OpenAPI применяется в нескольких сценариях:

  1. Документирование. Автоматическая генерация актуальной документации вместо поддержания её вручную.
  2. Контрактное проектирование (contract-first). Сначала описывается спецификация, затем по ней пишется код сервера и клиентов.
  3. Тестирование. Генерация unit- и интеграционных тестов из описания API.
  4. Валидация. Проверка запросов и ответов на соответствие схеме в рантайме.
  5. API-шлюзы и мониторинг. Платформы вроде Apigee, Kong или 3scale используют OpenAPI-файлы для настройки политик и мониторинга.

Альтернативы

К основным альтернативам OpenAPI относятся:

  • RAML (RESTful API Modeling Language) — YAML-основанный язык описания API, проект MuleSoft;
  • API Blueprint — формат на основе Markdown от Apiary;
  • gRPC + Protocol Buffers — подход Google, ориентированный на RPC вместо REST;
  • GraphQL Schema — язык описания для GraphQL-сервисов.

Несмотря на конкуренцию, OpenAPI де-факто стал доминирующим стандартом: поддерживается большинством инструментов разработки, включая Postman, Insomnia, JMeter, а также встроен во многие IDE и CI/CD-конвейеры.

Значение

Внедрение OpenAPI/Swagger снизило стоимость поддержки API-контрактов и ускорило интеграцию между командами. По опросам разработчиков, проводимым ежегодно, OpenAPI стабильно входит в тройку самых используемых технологий в области проектирования API. В России спецификация применяется при построении открытых ведомственных API и в коммерческой разработке, что делает её одним из стандартов индустрии.

Источники: документация OpenAPI Initiative (openapis.org), документация SmartBear (swagger.io), RFC 6838, спецификация JSON Schema.

Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru