Генерация агрегированного OpenAPI по нескольким файлам:
- Если ничего не задано, то результатом будет конкатенированный OpenAPI.
- Если задан параметр
include
, то в результирующий OpenAPI добавляются только те path, для которых заданы все переданныеtags
. Параметрexclude
не учитывается. - Если задан параметр
exclude
, то из всего множестваtags
удаляются те, что переданы вexclude
.
При фильтрации результата используются следующий допущения:
- Целевые
tags
строятся на базе блокеtags
в верхнем уровне описания OpenAPI и к ним применяется фильтрацияinclude
,exclude
. - Метод добавляется в результирующий OpenAPI, если всего
tags
содержатся в целевыхtags
. - Если метод добавляется в результирующий OpenAPI, то его имена объектов request и response сохраняются и при копировании схемы копируются только те объекты, на которые ссылались целевые методы.
- Фильтрация выполняется только в блоке
schemas
, т.к. springdoc при генерации добавляет все объекты туда, но не заполняетheaders
,parameters
,requestBodies
,responses
.
⚠️ Важное замечаниеПри генерации OpenAPI с правилами фильтрации требуется перечитывать декларации OpenAPI из файла, т.к. при удалении метода он помечается
null
, а это влияет наapis: Map<String, OpenAPI>
, который создается только один раз при инициализации приложения.
- Запустить
openapi-aggregator-by-tags
в кластере. - Опубликовать OpenAPI как ConfigMap.