我正在尝试将一些路径参数绑定到一个对象,以便我可以根据该类中的注释进行所有验证。
它工作正常,但 springfox 生成的 swagger 文档不会将类中的 @ApiParam 注释重新识别为路径变量。相反,它将它们显示为查询变量并告诉我我的 yml 存在语义错误:
路径语义错误。/{param1}/{param2} 声明的路径参数“param1”需要在路径或操作级别定义为路径参数
我可以通过使用@ApiImplicitParams 获得解决方法,但它的缺点是我必须将它用于可以接收该类对象的每个方法,复制信息。
在我的控制器中,我以这种方式设置了方法:
@GetMapping("{param1}/{param2}")
@ApiOperation(value="Returns a register of composite key param1|param2")
public RegisterDTO findRegisterByKey(@Valid RegisterKey registerKey)
{
return this.service.findRegisterByKey(registerKey);
}
还有我的 RegisterKey 类
public class RegisterKey {
@NotNull
@Min(value = 1)
@ApiParam(value = "First key", required = true)
private Long param1;
@NotNull
@Min(value = 1)
@ApiParam(value = "Second key", required = true)
private Long param2;
[... getters and setters ...]
}
我该怎么做才能让springfox生成spring json并将param1和param2视为路径参数而不是查询?