Swagger Java ApiResponse映射

时间:2019-06-05 23:48:09

标签: java swagger springfox

我正在尝试在Swagger UI文档中获取响应示例值,以正确显示地图。这就是我的地图:Map<Long, List<UserRole>>。 UserRole对象只有两个字段,roleId和roleName。

根据Swagger注释的Javadoc,responseContainer支持Valid values are "List", "Set" or "Map". Any other value will be ignored.

但是,这是SpringFox Swagger公共库内部的实现:

  if ("List".compareToIgnoreCase(responseContainer) == 0) {
    return Optional.of(resolver.resolve(List.class, response));
  } else if ("Set".compareToIgnoreCase(responseContainer) == 0) {
    return Optional.of(resolver.resolve(Set.class, response));
  } else {
    return Optional.of(resolver.resolve(response));
  }

显然,这不支持地图。

如果我未指定响应类型:@ApiResponse(code = 200, message = "OK"),则Swagger文档如下所示:

{
  "additionalProp1": [
    {
      "roleId": 1234,
      "roleName": "User"
    }
  ],
  "additionalProp2": [
    {
      "roleId": 1234,
      "roleName": "User"
    }
  ],
  "additionalProp3": [
    {
      "roleId": 1234,
      "roleName": "User"
    }
  ]
}

这几乎是正确的,除了我需要用一个长值替换additionalPropX字段。我尝试以几种不同的方式设置示例:@ApiResponse(code = 200, message = "OK", examples = @Example(value = @ExampleProperty(value = "Puppy"))),。我不认为这是在SpringFox中实现的。我尝试创建一个新的POJO来包装响应,但这只会导致一些非常奇怪的响应示例。

我正在通过Gradle使用最新的Swagger依赖项:

compile 'io.springfox:springfox-swagger-ui:2.9.2'
compile 'io.springfox:springfox-swagger2:2.9.2'

这可能吗?

0 个答案:

没有答案