springfox swagger 请求参数类型设置

编程教程 > Java > Spring (3222) 2024-11-26 14:39:04

springfox swagger 请求参数类型设置

解析类:springfox.documentation.spring.web.readers.parameter.ParameterTypeReader

参数解析
 

根据代码逻辑整理了一个表格

条件 对应parmType
@PathVariable注解 path
@RequestBody注解 body
@RequestPart注解 formData
@RequestHeader注解 header
@RequestParam注解 解析方式和无注解时一致
参数类型为MultipartFile或被Collection\Array等包装的MultipartFile form
无任何注解consumes包含application/x-www-form-urlencoded且接口类型为post form
无任何注解consumes包含multipart/form-data且接口类型为post formData
无任何注解且不满足上述2个条件 query
不符合上述任何条件 body

到这里发现问题,我的接口参数很多都只有@ApiParam这一个注解来描述参数意义,这样就会都走到最后返回默认的body,导致接口发生问题,而正确的类型应该是query,由上表看来,使paramType变为query的方式有2种

  1. 不加任何注解、consumes不包含application/x-www-form-urlencodedmultipart/form-data
  2. 使用@RequestParam注解,consumes不包含application/x-www-form-urlencodedmultipart/form-data

consumes我就没设置过,所以只能使用@RequestParam注解来使paramType变为query,但是每个接口都要加,这么大(xiao)的工作量我能妥协吗? 显然不能!

解决方案:

于是自定义CustomParameterTypeReader 修改默认的返回值为query,然后@Component、@Order作为bean并将优先级调至最低(@Order默认的就是最大值),因为swagger插件的顺序是使用AnnotationAwareOrderComparator来排序的,这样,在原有的ParameterTypeReader配置paramType之后,我们自定义的CustomParameterTypeReader将覆盖paramType,实现最终目的


 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
springfox swagger 请求参数类型设置解析类:springfox.documentation.spring.web.readers.parameter.ParameterTypeR...
swagger dataType 有那些2.6.x"int", "date", "string", "double", "float", "boolean", "byte", "object",...
前言距离springfox的swagger2.x 以及3.0.0 长久等待,等来了springdoc的swagger 3 为啥是3是因为支持openapi3.0
Swagger Spring Boot Stater简介spring boot 整合 springfox 实现swagger api文档生成
Swagger2 导出离线文档简述继上一篇搬运国外的swagger2导出离线文档之后,最近发现国内一款不错的swagger ui组件和导出离线的方法,比之前的更简单优雅
1.前言通过前面的两篇博客Spring Boot Security Swagger2整合生成安全的在线REST API文档 SpringMVC也可参考spring boot REST 通过Swa...
【重要提示】:目前已有更好的方法,可以参考:Swagger2 导出离线 word文档一、使用背景    如今,REST和微服务已经有了很大的发展势头
创建REST API时,良好的文档是有帮助的。而且,API中的每一个变化都应该在参考文档中同时描述。手动完成这是一个乏味的操作,因此这个过程的自动化是不可避免的。
Python –数据类型数据类型定义变量的类型
spring boot 项目启动报错 Failed to start bean 'documentationPluginsBootstrapper'; nested exception i...
 spring boot 获取文件的mime type类型名称String contentType = ""; Optional<MediaType&gtl; mediaT...
javascript中onclick事件传递对象参数,javascript,javascript传递对象参数
版本v1硬件参数ModelTR3000版本v1CPUMediaTek MT7981BACPU MHz1300CPU Cores_numcores2Flash M
出现问题的环境springboot2.7.xjdk1.8请求方式Post参数格式FormDatakv防止特点:值特别大(类似富文本标签啥的内容特别多)问题排除FormDatakey和Contro...
问题环境Spring 中首字母小写,第二个字母大写造成的参数问题在进行前后端的联调时,有时候会出现,前端明明传了值,后端接口却接收不到的情况,这种情况常常让人很