如何在OpenAPI生成的Spring接口中禁用请求验证?
解决OpenAPI Generator Maven插件5.1.0生成接口自动添加@Validated注解的问题
以下是两种可行的解决办法,按优先级尝试:
1. 通过插件配置直接禁用验证注解
在maven插件的配置里添加useValidation参数并设置为false,就能让生成器不再给接口添加@Validated注解。配置示例如下:
<plugin> <groupId>org.openapitools</groupId> <artifactId>openapi-generator-maven-plugin</artifactId> <version>5.1.0</version> <executions> <execution> <goals> <goal>generate</goal> </goals> <configuration> <inputSpec>${project.basedir}/src/main/resources/api-spec.yaml</inputSpec> <generatorName>spring</generatorName> <interfaceOnly>true</interfaceOnly> <skipDefaultInterface>true</skipDefaultInterface> <!-- 禁用自动添加@Validated注解 --> <useValidation>false</useValidation> <apiPackage>com.your.project.api</apiPackage> <modelPackage>com.your.project.model</modelPackage> <!-- 其他自定义配置 --> </configuration> </execution> </executions> </plugin>
2. 自定义模板覆盖生成逻辑
如果上述配置不生效(部分场景下可能因模板差异导致),可以直接修改生成接口的模板:
- 从OpenAPI Generator 5.1.0版本的Spring模板中复制
api.mustache文件(该模板负责生成API接口类) - 打开复制的模板文件,找到包含
@Validated的代码行(通常是{{#useValidation}}@Validated{{/useValidation}}),将其删除或注释 - 在插件配置中指定自定义模板的目录:
<configuration> <!-- 已有配置 --> <templateDirectory>${project.basedir}/src/main/resources/openapi-templates</templateDirectory> </configuration>
确保openapi-templates目录下的结构和官方模板一致(比如放在spring子目录下,对应generatorName),这样生成器会优先使用你的自定义模板。
内容的提问来源于stack exchange,提问作者tkalvin
相关产品推荐
相关产品推荐

