【问题标题】:Using Java objects as request parameters breaks down to primitives in swagger ui springfox使用 Java 对象作为请求参数分解为 swagger ui springfox 中的原语
【发布时间】: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&amp;size=10&amp;sort=+firstName。所以我有一个从StringSort 的自定义转换器,它工作得很好。

但是,生成的 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"
           }
]

如您所见,它分解了FilterSort 字段并生成了2 个参数:sort.propertyNamesort.order。相反,我想要一个参数sort,类型为string

有什么方法可以实现吗?我尝试用@ApiParam(name = "sort", value = "Sort", type = "string") 注释sort 字段,但它不起作用。

【问题讨论】:

  • 您可以创建一个备用类型规则来将Sort 视为String
  • 谢谢,@DilipKrishnan,成功了!您能否将您的评论添加为答案,以便我接受?

标签: swagger swagger-ui springfox


【解决方案1】:

您可以创建一个替代类型规则,将Sort 视为String

import static springfox.documentation.schema.AlternateTypeRules.*;
...
// Configure your docket bean
    new Docket(...)
         ...
         .alternateTypeRules(newRule(Sort.class, String.class)
         ...

【讨论】:

    猜你喜欢
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 2017-07-09
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多