我有以下控制器代码
@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"
}
]
正如您所看到的,它已经细分了Sort
的{{1}}字段,并生成了2个参数:Filter
和sort.propertyName
。相反,我想要一个参数sort.order
,其类型为sort
。
有没有办法实现这一目标?我尝试使用string
对sort
字段进行注释,但它不起作用。
答案 0 :(得分:1)
您可以创建将Sort
视为String
import static springfox.documentation.schema.AlternateTypeRules.*;
...
// Configure your docket bean
new Docket(...)
...
.alternateTypeRules(newRule(Sort.class, String.class)
...