【发布时间】:2018-04-20 15:31:03
【问题描述】:
我有以下控制器代码
@GetMapping("/users")
public ResponseEntity<UserDto> getUsers(Filter filter) {
return ResponseEntity.ok(userService.findUsers(filter));
}
Filter.java:
public class Filter {
private Integer page;
private Integer size;
// Contains 2 fields: "propertyName" and "order"
private Sort sort;
... getters and setters
}
网址如下:/users?page=1&size=10&sort=+firstName。所以我有一个从String 到Sort 的自定义转换器,它工作得很好。
但是,生成的 swagger 文档不正确:
"parameters":[
{
"name":"sort.propertyName",
"in":"query",
"required":false,
"type":"string"
},
{
"name":"sort.order",
"in":"query",
"required":false,
"type":"string",
"enum":[
"+",
"-"
]
},
{
"name":"page",
"in":"query",
"required":false,
"type":"integer",
"format":"int32"
},
{
"name":"size",
"in":"query",
"required":false,
"type":"integer",
"format":"int32"
}
]
如您所见,它分解了Filter 的Sort 字段并生成了2 个参数:sort.propertyName 和sort.order。相反,我想要一个参数sort,类型为string。
有什么方法可以实现吗?我尝试用@ApiParam(name = "sort", value = "Sort", type = "string") 注释sort 字段,但它不起作用。
【问题讨论】:
-
您可以创建一个备用类型规则来将
Sort视为String -
谢谢,@DilipKrishnan,成功了!您能否将您的评论添加为答案,以便我接受?
标签: swagger swagger-ui springfox