关于Swagger的@ApiModel 返回内容注释不显示问题解决方案

关于Swagger的@ApiModel 返回内容注释不显示问题解决方案

1,情况一在Controller接口层需要直接返回实体类,或者集合-泛型为使用@ApiModel注解的实体类。

2,情况二: 如果使用统一的返回封装类是不会显示@ApiModel所注释的信息,即使使用Object作为返回类也不行。

通常绝大部分情况,系统都是采用全局统一返回类来返回数据,接下来,处理一下情况二

1, 全局返回类,需要加泛型,示例如下所示:
关键词:AjaxResult<T>、T data

@ApiModel("全局统一返回结果")
public class AjaxResult<T> implements Serializable {
    
    
    private static final long serialVersionUID = -27436821367995230L;
    @ApiModelProperty("是否成功")
    private Boolean success;
    @ApiModelProperty("返回码")
    private Integer code;
    @ApiModelProperty("返回消息")
    private String msg;
    @ApiModelProperty("返回数据")
    private T data;

2,返回的方法,凡是涉及到参数为泛型类型的data的都要加泛型,示例如下:
关键字:T data

 public static <T> AjaxResult<T> success() {
    
    
        return success((Object)null);
    }

    public static <T> AjaxResult<T> success(T data) {
    
    
        return success("成功", data);
    }

    public static <T> AjaxResult<T> success(String msg, T data) {
    
    
        return new AjaxResult(ResultEnum.SUCCESS, msg, data);
    }

3,在属性的set、get方法中,需要泛型,不能返回Object类型,否则@ApiModel无效
这一步比较重要,容易忽略

 public void setData(T data) {
    
    
        this.data = data;
    }
public T getData() {
    
    
        return this.data;
    }

4,在Controller层的返回值中,需要泛型 T的实际返回类型,示例如下:
关键字: 返回值Result<InvateRecordVO>

@GetMapping(value = "/queryInvateRecord")
    @ApiOperation("查询-扫码邀请记录")
    public Result<InvateRecordVO> queryInvateRecord() {
    
    
        return Result.success(userChatService.queryInvateRecord());
    }

基本上检查以上步骤,问题解决

猜你喜欢

转载自blog.csdn.net/qq_45399396/article/details/130410866
今日推荐