【发布时间】:2017-11-04 21:34:27
【问题描述】:
我使用 swagger 已经有一段时间了,现在我遇到了一个问题,即生成的请求 URL 将我的可选参数放入请求中。这在我使用相同注释、swagger 版本和 swagger maven 版本的其他项目上不会发生。
这是我的@Controller 中的代码 sn-p
private static final String BY_USERNAME = "byUsername";
private static final String BY_NAME = "byName";
private static final String BY_PHONENUMBER = "byPhoneNumber";
private static final String BY_USERTYPENAME = "byUserTypeName";
private static final String BY_ACTIVE = "byActive";
private static final String BY_ACTIVE_AND_AVAILABLE = "byActiveAndAvailable";
@ApiOperation(value = "Read User(s)", notes = "notes removed so post wont be so long", consumes = "application/x-www-form-urlencoded")
@RequestMapping(value = "", method = RequestMethod.GET, consumes = "application/x-www-form-urlencoded")
@ApiImplicitParam(value = "Authorization Token", name = TokenAuthenticationService.HEADER_STRING, dataType = "String", paramType = "header")
@ApiResponses(value = { @ApiResponse(message = "successful read call", code = 200), @ApiResponse(message = "bad parameter provided", code = 400) })
public Page<User> readUser(
@ApiParam(name = "queryType", value = "type of query", allowableValues = BY_USERNAME + "," + BY_NAME + "," + BY_PHONENUMBER + ","
+ BY_USERTYPENAME + "," + BY_ACTIVE + "," + BY_ACTIVE_AND_AVAILABLE) @RequestParam(value = "queryType", required = true) String queryType,
@ApiParam(name = "username", value = "username of user") @RequestParam(value = "username", required = false) String username,
@ApiParam(name = "name", value = "name of user(s)") @RequestParam(value = "name", required = false) String name,
@ApiParam(name = "phoneNumber", value = "phone number of user(s)") @RequestParam(value = "phoneNumber", required = false) String phoneNumber,
@ApiParam(name = "userTypeName", value = "user type name of user(s)") @RequestParam(value = "userTypeName", required = false) String userTypeName,
@ApiParam(name = "active", value = "active status of user(s)") @RequestParam(value = "active", required = false) Boolean active,
@ApiParam(name = "available", value = "available status of user(s)") @RequestParam(value = "available", required = false) Boolean available,
Pageable pageable) {
这是非常基本的招摇注解。问题是 swagger-ui 中生成的 URL 如下所示:
我尝试在整个互联网、招摇页面和 * 上进行搜索,但我找不到任何提及此错误的信息。非常奇怪的是,如果我将 RequestMethod 更改为 POST,它会正常工作。似乎是 swagger-ui 处理可选参数的错误。还有其他人遇到过这个吗?除了将请求方法设为 POST 之外,还有其他解决方法吗?
编辑:“consumes =”application/x-www-form-urlencoded“”不在我的原始代码中。我一直在调试它并添加一些东西来尝试让它工作哈哈。
使用的版本:
- springfox-swagger2版本2.6.1
- springfox-swagger-ui版本2.6.1
【问题讨论】:
标签: java spring swagger swagger-ui springfox