Swagger为查询参数分组对象生成@RequestParam导致绑定失败,如何禁用?
解决方案
针对Swagger生成器自动给对象类型查询参数添加@RequestParam注解导致绑定失败的问题,可通过以下几种方式解决:
修改生成器全局配置(推荐)
如果使用的是OpenAPI Generator,直接在生成配置的configOptions中添加以下配置:{ "generatorName": "spring", "configOptions": { "springUseRequestParamForObjectQueryParams": "false" } }如果使用的是原版Swagger Codegen,添加对应配置即可:
{ "configOptions": { "skipRequestParamAnnotationForObjects": "true" } }配置生效后,所有对象类型的查询参数都不会自动生成
@RequestParam注解,匹配Spring MVC的POJO查询参数绑定规则。给指定参数添加OpenAPI扩展
如果只需要针对单个参数关闭@RequestParam生成,不需要修改全局配置,可以在参数定义中添加扩展属性覆盖注解生成逻辑:saleParameters: in: query name: saleParameters schema: type: object # 原有属性保持不变 style: form explode: true x-swagger-annotations: "@Valid"该配置会强制生成器仅给参数添加你指定的
@Valid注解,不会自动追加@RequestParam。自定义生成模板
如果以上配置不匹配你使用的生成器版本,可以自行修改生成器的Mustache模板:找到参数注解生成的param.mustache模板,删除针对query类型对象参数生成@RequestParam的逻辑,生成代码时指定自定义模板路径即可。
内容的提问来源于stack exchange,提问作者Maciaz
相关产品推荐
相关产品推荐

