Я использую openapi-генератор для gradle.
Конфиг:
task generateSalesOffersApi(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTask){
generatorName = "spring"
inputSpec = "${projectDir}/src/main/resources/my-contract.yaml".toString()
outputDir = "${buildDir}/generated".toString()
additionalProperties = [
interfaceOnly: 'true',
reactive: 'true',
skipDefaultInterface: "true",
implicitHeaders: "true",
]
configOptions = [
dateLibrary: 'java8',
swaggerDocketConfig: "true",
useTags: 'false',
apiPackage: 'com.data.api',
modelPackage: 'com.data.model',
]
systemProperties = [
apis: "",
models: "",
hideGenerationTimestamp: "true"
]
Модели генерируются, как и ожидалось. Api в основном тоже.
Но как избавиться от ResponseEntity обёртывания и ServerWebExchange как параметра метода в сгенерированных интерфейсах.
Факт:
Mono<ResponseEntity<MyPojo>> getMyPojo(@ApiParam(value = "Param 1",required=true) @PathVariable("param1") String param1, ServerWebExchange exchange);
Ожидается:
Mono<MyPojo> getMyPojo(@ApiParam(value = "Param 1",required=true) @PathVariable("param1") String param1);
Я пытался использовать генератор java, где вы можете установить для библиотеки значение webclient , но, к сожалению, в нем не было много конфигурация для меня и генерирует много ненужных классов.