我在Spring中定义了一个端点,并将一个ApiParam定义为可选。
@RequestMapping(value = "/searchResult/getList", method = RequestMethod.GET)
@ApiOperation(value = "populate list")
public JasonMessage getList(@ApiParam(name="id", value = "id", required = false)
@RequestParam Integer id) {
但是当我在没有?id=xxx
参数的情况下编写网址时,我收到了400错误,我预计这是一个格式错误的网址错误。
这是为什么?我已将其定义为required = false
,并且它不是路径变量,但是如果不包含至少一个空的查询参数(例如?id=
),我就无法编写该URL。
我是否对URL的真正可选参数感到困惑,这是一个swagger的问题,spring的问题,还是我在某个地方犯过的错误。
回复正文为no content
,回复代码仅为400
。
答案 0 :(得分:2)
您需要将注释更改为@RequestParam(required = false)
,必填字段默认为true
。此外,您可以删除required
上的@ApiParam
,因为swagger会从Springs注释中检测到这一点。
请记住,Swagger注释是关于api的其他信息,对端点的功能没有影响(在生成的api页面之外)。
此外,您应该将请求参数的名称放在@RequestParam
注释上,这也是因为Swagger注释对Springs行为没有影响。
您的最终代码应为
@RequestMapping(value = "/searchResult/getList", method = RequestMethod.GET)
@ApiOperation(value = "populate list")
public JasonMessage getList(@ApiParam
@RequestParam(value = "id", required = false) Integer id) {