我希望使用OpenAPI 3.0生成一个Java API,但不希望任何返回类型都是ResponseEntity。
我有一个小的.yaml文件,它生成的API看起来像这样(为了简洁起见,我删除了很多注解):
@GetMapping(value = "/student", produces = { "application/json" })
ResponseEntity<List<Student>> getAllStudents();
这非常简单,但我的雇主需要一个这样的API:
@GetMapping(value = "/student")
List<Student> getAllStudents();
问题是,我找不到一个配置选项来使代码生成器无需ResponseEntities。
是否有任何方法可以将OpenAPI生成器配置为不使用ResponseEntities?
详细数据:
我使用Maven进行构建,并在pom文件中配置代码生成,如下所示:
<build>
<plugins>
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<!-- RELEASE_VERSION -->
<version>5.0.0-SNAPSHOT</version>
<!-- /RELEASE_VERSION -->
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!--See https://github.com/OpenAPITools/openapi-generator/tree/master/modules/openapi-generator-maven-plugin-->
<inputSpec>${project.basedir}/OpenApi.yaml</inputSpec>
<generatorName>spring</generatorName>
<groupId>com.dummy.example</groupId>
<artifactId>dummy</artifactId>
<artifactVersion>2.0</artifactVersion>
<library>spring-boot</library>
<packageName>com.neptunedreams.configuration</packageName>
<apiPackage>com.neptunedreams.api</apiPackage>
<invokerPackage>com.neptunedreams</invokerPackage>
<modelPackage>com.neptunedreams.model</modelPackage>
<configOptions>
<!--See https://github.com/OpenAPITools/openapi-generator/blob/master/docs/generators/spring.md -->
<sourceFolder>src/main/java</sourceFolder>
<bigDecimalAsString>true</bigDecimalAsString>
<dateLibrary>java8</dateLibrary>
<interfaceOnly>true</interfaceOnly>
<library>spring-boot</library>
<skipDefaultInterface>true</skipDefaultInterface>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
我的yaml文件是非常基本的,如果你需要看到它:
openapi: 3.0.0
info:
description: StackOverflow ResponseEntity Question
version: 1.0.0
title: ResponseEntity Question
paths:
/student:
get:
summary: Get all students
operationId: getAllStudents
responses:
200:
description: Get all students
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Student'
components:
schemas:
Student:
type: object
properties:
name:
type: string
id:
type: integer
format: int64
required:
- name
- id
1条答案
按热度按时间gdrx4gfi1#
就像这里How to prevent Mono Request body generation when generating the API interfaces for spring-webflux with open api code generator?你可以覆盖/自定义swagger-codegen模板中的
api.mustache
。在这里你可以找到原始模板https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/main/resources/JavaSpring/api.mustache
所以你可以把你自己的模板放在src/main/java/resource里面。
以下是关于模板https://github.com/OpenAPITools/openapi-generator/blob/master/docs/templating.md的文档