java - Swagger API 文档通过@ApiResponse 与映射作为responseContainer 不起作用

标签 java swagger swagger-ui openapi

我有一个返回 Map<String,MyObject> 的端点

public Response doStuff(){
  Map<String,MyObject> map = getMap();
  return Response.ok(map ).build();
}

因此,我厌倦了将 API 描述如下:

@ApiResponses({@ApiResponse(code = 200, message = "OK", response = MyObject.class, responseContainer = "Map[String,MyObject]")}
public Response doStuff(){
   Map<String,MyObject> map = getMap();
   return Response.ok(map ).build();
}

在 swagger UI 中,这只会呈现 MyObject model 作为返回类型,忽略 MapString键。 enter image description here

当我声明端点时(我最终将这样做)

public  Map<String,MyObject> doStuff(){
  ...
}

swagger ui 按预期渲染模型: enter image description here

我无法找到任何有关将 Map 作为响应容器的有用文档。

如何声明 Map<String,MyObject 的返回模型@ApiResponse内注释?

最佳答案

根据 Swagger 文档,responseContainer 的唯一有效值是“List”、“Set”或“Map”。任何其他值都将被忽略: https://docs.swagger.io/swagger-core/v1.5.0/apidocs/io/swagger/annotations/ApiOperation.html#responseContainer()

所以尝试一下

responseContainer = "Map"

而不是

responseContainer = "Map[String,MyObject]"

关于java - Swagger API 文档通过@ApiResponse 与映射作为responseContainer 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61541453/

相关文章:

twitter-bootstrap - 他们是否提供了任何自定义的 Twitter Bootstrap 式 swagger-ui 实​​现?

java - Swagger-ui 与 Spring 安全性

java - 线程run()函数调用

python - Flasgger - 上传文件

java - 在 Java Swing 中给按钮预设 "Style"

java - 从多个 REST 端点组装 Swagger 文档的最佳方式

java - 在 Spring MVC 应用程序上获取空的 swagger UI

spring-boot - 我可以将/swagger-ui.html重定向到/swagger-ui/

java - 通过Java进行邮件验证

java - 格式化日期以用于 Java 中的文本到语音转换