在swagger ui springfox中,使用Java对象作为请求参数会分解为原语
我有以下控制器代码在swagger ui springfox中,使用Java对象作为请求参数会分解为原语,swagger,swagger-ui,springfox,Swagger,Swagger Ui,Springfox,我有以下控制器代码 @GetMapping("/users") public ResponseEntity<UserDto> getUsers(Filter filter) { return ResponseEntity.ok(userService.findUsers(filter)); } URL如下:/users?page=1&size=10&sort=+firstName。因此,我有一个从String到Sort的自定义转换器,它工作得非常好 但是,生成的招摇过市文档
@GetMapping("/users")
public ResponseEntity<UserDto> getUsers(Filter filter) {
return ResponseEntity.ok(userService.findUsers(filter));
}
URL如下:/users?page=1&size=10&sort=+firstName
。因此,我有一个从String
到Sort
的自定义转换器,它工作得非常好
但是,生成的招摇过市文档不正确:
"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
字段,并生成了两个参数:Sort.propertyName
和Sort.order
。相反,我希望有一个参数sort
,类型为string
有没有办法做到这一点?我已尝试使用
@ApiParam(name=“sort”,value=“sort”,type=“string”)
注释排序
字段,但它不起作用。您可以创建另一种类型规则,将排序
视为字符串
import static springfox.documentation.schema.AlternateTypeRules.*;
...
// Configure your docket bean
new Docket(...)
...
.alternateTypeRules(newRule(Sort.class, String.class)
...
您可以创建一个备用类型规则,将
排序
视为字符串
谢谢@DilipKrishnan,这很有效!你能补充你的评论作为回答吗?这样我就可以接受了?
import static springfox.documentation.schema.AlternateTypeRules.*;
...
// Configure your docket bean
new Docket(...)
...
.alternateTypeRules(newRule(Sort.class, String.class)
...