Skip to content

yoomoney/openapi-bundler

Repository files navigation

Build Status codecov License: MIT Javadoc Download

openapi-bundler

Описание

Библиотека для сборки нескольких 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());
    }
}

Варианты организации спецификаций смотрите в тестах.