Gre*_*ash 5 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));
}
Run Code Online (Sandbox Code Playgroud)
显然这不支持 Map。
如果我没有指定响应类型:@ApiResponse(code = 200, message = "OK")那么 Swagger 文档如下所示:
{
"additionalProp1": [
{
"roleId": 1234,
"roleName": "User"
}
],
"additionalProp2": [
{
"roleId": 1234,
"roleName": "User"
}
],
"additionalProp3": [
{
"roleId": 1234,
"roleName": "User"
}
]
}
Run Code Online (Sandbox Code Playgroud)
这几乎是正确的,只是我需要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'
Run Code Online (Sandbox Code Playgroud)
这可能吗?
| 归档时间: |
|
| 查看次数: |
1086 次 |
| 最近记录: |