Библиотека для сборки нескольких OpenApi v3 спецификаций в один файл.
Большие файлы спецификаций (>3000 строк) требуют разделения на более мелкие файлы, для читабельности и удобства редактирования.
Утилитарные классы этой библиотеки предоставлюят такой функционал.
На вход подается корневой файл описывающий основную часть спецификации, с перечнем всех endpoint.
В этом файле могут быть ссылки на другие файлы по средствам конструкции $ref
Результатом работы является спецификация без конструкции $ref
, содержимое всех файлов которые указаны в $ref
заинлайнены в основной файл.
У swagger есть свой инструмент объединении нескольких файлов в один swagger-cli, но нам он не подходит т.к. при объединении он генерирует не валидные имена для объектов, это не позволит правильно генерировать код по таким спецификациям.
Добавьте зависимость в build.gradle:
repositories {
mavenCentral()
}
dependencies {
implementation 'ru.yoomoney.tech:openapi-bundler:3.0.0'
}
import java.net.URI;
public class Application {
public static void main(String[] args) {
URI specificationURI = URI.create("file:path/to/openapi/specification.yaml");
OpenApiV3SpecificationBundle bundler = new OpenApiV3SpecificationBundle(specificationURI);
OpenApiV3SpecificationBundle.Result result = bundler.bundle();
System.out.println("Errors: " + result.getConflictingTypeNames());
System.out.println("Bundled specification: " + result.getBundledSpecification());
}
}
Варианты организации спецификаций смотрите в тестах.