SSM+Swagger设置参数是否必须时遇到的400或415错误

在SSM项目中,使用Swagger配置参数时遇到问题,当设置参数非必需(@ApiParam(required = false)),会导致415错误。分析原因是Swagger的@ApiParam注解的required属性默认为true,而Spring的@RequestParam默认为非必需。解决方案是明确设置@ApiParam的allowableValues和defaultValue属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家在做SSM项目时对于设置传参的必须或非必须这个需求应该是比较常见的,那么正常的两种情况应该是:

  1. 对于必须参数应该是不传会出错,传则正常获取;
  2. 对于非必须参数应该是不传默认为null(当然也可以修改默认值),传则正常获取。

一般设置SSM方法参数可以有:直接参数名字对应,或者使用@RequestParam注解,或者使用@Model注解等多个方式,这里就不详细说明了,总之是没有什么大问题的。

那么问题来了,为什么在我加入Swagger的@ApiParam注解之后,就会出现问题呢:

  1. 对于必须参数来说,设置@ApiParam(required = true)属性就可以了;效果是不传会出错,传则正常获取。(没有出现问题)
  2. 对于非必须参数就有点不对了,在我设置@ApiParam(required = false)或不设置此属性时;效果却是不传会有415错误(不支持媒体类型参数),传则正常获取。(与期望不符)

这里先说下我的解决办法

  1. 对于必须参数来说,需要设置@ApiParam(required = true),以及@RequestParam(required = ture)@RequestParam
  2. 对于非必须参数来说,需要设置@ApiParam@ApiParam(required = false),以及@RequestParam(required = false)

那么这个小问题出现的原因是什么呢?尝试之下认为:

  1. Swagger的@ApiParam注解的required属性值默认为
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值