Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/romanow/openapi-aggregator-by-tags
Concatenate multiple OpenAPI in one file with Include and exclude tags
https://github.com/romanow/openapi-aggregator-by-tags
openapi openapi-aggregraton spring-boot
Last synced: about 22 hours ago
JSON representation
Concatenate multiple OpenAPI in one file with Include and exclude tags
- Host: GitHub
- URL: https://github.com/romanow/openapi-aggregator-by-tags
- Owner: Romanow
- Created: 2023-06-30T15:40:48.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-04-18T11:43:08.000Z (7 months ago)
- Last Synced: 2024-04-18T13:24:08.816Z (7 months ago)
- Topics: openapi, openapi-aggregraton, spring-boot
- Language: Kotlin
- Homepage:
- Size: 107 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# OpenAPI aggregator by Tags
[![Build project](https://github.com/Romanow/openapi-aggregator-by-tags/actions/workflows/build.yml/badge.svg)](https://github.com/Romanow/openapi-aggregator-by-tags/actions/workflows/build.yml)
[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)Генерация агрегированного 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](https://springdoc.org/) при генерации добавляет все
объекты туда, но не заполняет `headers`, `parameters`, `requestBodies`, `responses`.> ⚠️ **Важное замечание**
>
> При генерации OpenAPI с правилами фильтрации _требуется перечитывать_ декларации OpenAPI из файла, т.к. при удалении
> метода он помечается `null`, а это влияет на `apis: Map`, который создается только один раз при
> инициализации приложения.## TODO
* [ ] Запустить `openapi-aggregator-by-tags` в кластере.
* [ ] Опубликовать OpenAPI как ConfigMap.