我正在尝试在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'
这可能吗?