CI pre-commit Release License

OpenAPI aggregator by Tags

Подключение

Maven

<dependency>
  <groupId>ru.romanow.openapi</groupId>
  <artifactId>aggregator-by-tags</artifactId>
  <version>${aggregator-by-tags.version}</version>
</dependency>

Gradle

testImplementation "ru.romanow.openapi:aggregator-by-tags:$aggregatorByTagsVersion"

Реализация

Генерация агрегированного OpenAPI по нескольким файлам:

  1. Если ничего не задано, то результатом будет конкатенированный OpenAPI.
  2. Если задан параметр include, то в результирующий OpenAPI добавляются только те path, для которых заданы все переданные tags. Параметр exclude не учитывается.
  3. Если задан параметр exclude, то из всего множества tags удаляются те, что переданы в exclude.

При фильтрации результата используются следующий допущения:

  • Целевые tags строятся на базе блоке tags в верхнем уровне описания OpenAPI и к ним применяется фильтрация include, exclude.
  • Метод добавляется в результирующий OpenAPI, если всего tags содержатся в целевых tags.
  • Если метод добавляется в результирующий OpenAPI, то его имена объектов request и response сохраняются и при копировании схемы копируются только те объекты, на которые ссылались целевые методы.
  • Фильтрация выполняется только в блоке schemas, т.к. springdoc при генерации добавляет все объекты туда, но не заполняет headers, parameters, requestBodies, responses.