如何在招摇的ApiOperation注释响应变量中传递类型的类

时间:2019-03-28 08:58:59

标签: java spring-boot swagger

我想大方地展示一下响应,这是一个通用类。但是它不会采用响应的类的类型。

@ApiOperation(value = "Get user name", response = ResponseWrapper.class)
// but I want to pass

@ApiOperation(value = "Get user name", response = ResponseWrapper<UserModel>.class)
// here I am getting error 
// how can I pass ResponseWrapper<UserModel>.class in the response variable

// In swagger response example body will be shown like :
/*
{
  "errors": [
    {
      "errorCode": "string",
      "message": "string"
    }
  ],
  "id": "string",
  "metadata": {},
  "response": {},
  "responsetime": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
  "version": "string"
}

But I want my response example body like this : 

{
  "errors": [
    {
      "errorCode": "string",
      "message": "string"
    }
  ],
  "id": "string",
  "metadata": {},
  "response": {
    "userName" : "string"
  },
  "responsetime": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
  "version": "string"
}
*/

示例代码没有通用类型的ResponseWrapper,但是我想传递通用类型的Response包装器。

2 个答案:

答案 0 :(得分:0)

到目前为止,我发现的唯一方法是创建一个显式类型的类,以实现/扩展您的泛型:

public class UserResponse extends ResponseWrapper<UserModel>{
}

这允许您做

@ApiOperation(value = "Get user name", response = UserResponse .class)

答案 1 :(得分:0)

我已经阅读了文档。 无法,我们无法将通用的“类型”类传递给 @ApiOperation的参数,即“响应”

对于我来说,我返回的是 ResponseEntity ,但是在建议的帮助下,我希望获得 ResponseEntity 并将其映射到 ResponseWrapper

但是我需要在Swagger UI中向用户显示响应示例是 ResponseWrapper 对象。因此,我想在 @ApiOperation“ response” 变量中为ResponseWrapper类提供类型。

为此,我必须将返回类型从 ResponseEntity 更改为 ResponseWrapper 。否则没有办法。如果您的回复类似于 ResponseWrapper> ,则类型解析器就会出现。