我想避免maven插件swagger代码生成的接口中的“默认”实现。例如,使用petstore swagger:http://petstore.swagger.io/v2/swagger.json
我用Maven插件生成界面:
<plugin>
<groupId>io.swagger</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>2.2.3</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>./src/main/resources/swagger/api.yml</inputSpec>
<language>spring</language>
<generateSupportingFiles>false</generateSupportingFiles>
<configOptions>
<interfaceOnly>true</interfaceOnly>
<java8>true</java8>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
我PetApi.java使用方法的默认实现生成了类似www.example.com的接口:
default ResponseEntity<Void> addPet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody Pet body) {
// do some magic!
return new ResponseEntity<Void>(HttpStatus.OK);
}
我想避免它像
ResponseEntity<Void> addPet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody Pet body);
有可能做到吗?
2020年3月更新:
根据新的OpenAPI工具openapi-generator
spring
有一个选项(不推荐使用language
,请使用generatorName
)skipDefaultInterface
https://github.com/OpenAPITools/openapi-generator/blob/master/docs/generators/spring.md
5条答案
按热度按时间gtlvzcf81#
对于“spring”语言,“java8”参数既用于表示默认接口的使用,也用于表示Java8的一般使用,例如,当使用Java8数据库时。
相关票证:
https://github.com/swagger-api/swagger-codegen/issues/8045
https://github.com/swagger-api/swagger-codegen/issues/5614
dw1jzc5e2#
我解决了配置同一插件的两个执行。一个配置为只生成模型类(java8=true和dateLibrary=java8-localdatetime),另一个配置为只生成API接口(java=false和dateLibrary为空)。
注意:我使用的版本'v3'的插件。
hpxqektj3#
根据documentation,以下应解决该问题:
y3bcpkx14#
我设法< java8 >< /java8 >在swagger codegen派生的项目中使用false来避免这些默认方法:https://github.com/OpenAPITools/openapi-generator
适合我的示例:
jhiyze9q5#
有两种不同的插件可用于基于API规范文档生成代码:
io.swagger:swagger-codegen-maven-plugin
(最新版本中为io.swagger.codegen.v3:swagger-codegen-maven-plugin
)org.openapitools:openapi-generator-maven-plugin
每一个都有一套不同配置的发电机。
最初的问题是关于第一个问题的,但是作者找到的解决方案是关于第二个问题的。事实上,现在用于
swagger-codegen-maven-plugin
的Spring生成器也有一个类似的选项:defaultInterfaces
。下面的示例对我很有效: