1. 正常显示情况

正常情况下,不管是调试还是文档说明都会显示以上字段说明。

2. 非正常情况

2.1 返回Object 不显示

响应参数不显示字段属性:

2.2 返回Map不显示

为何返回Map不显示,大家都知道Map是Java里面的集合接口,不管是Map本身还是诸如HashMap等子实现,这类数据对于Swagger来说都是未定义结构的数据

Swagger只认识定义好的类-属性,所以接口返回Map,对于Swagger来说是没有字段展示的,这种情况同样适用与返回Object这个顶级父类.这也是为何要适用泛型T的原因

2.3 返回范型T不显示

很多朋友会说我已经使用泛型T了,可是文档上还是不显示,这里主要的原因有以下几点

  • 属性定义必须是泛型T,如下:
  • private T data;//返回属性T
  • 返回T类型的get方法必须是返回T,有时候自动生成get、setter方法插件等会将我们的代码生成返回Object,例如:
  • public Object getData(){return data;
    }

    以上是错误的形式,尽管属性中已经定义为T了,正确的方式

  • public T getData(){return data;
    }
  • 最重要的一步,以上步骤完全正确,代码也没有问题,可是ui还是不显示属性,必须在接口层强指定泛型类型(可能是Swagger要求我们写代码要规范吧~~~),如下:

友情提示

在2.0.6等后面的高版本中,由于升级了Springfox基础组件,如果开发者使用类似JRebel这类热加载插件的时候,会出现类字段没有的情况,目前没有办法解决springfox项目与JRebel插件的冲突,建议是不用JRebel

2.4 属性注解添加方式不正确也不会显示

一般在完成以上情况后,字段说明都会显示,这里再提醒一下大家,如果已经在泛型中强制约束了返回类型后,就无需在注解@ApiOperation中设置response属性值,比如如下代码

  • @ApiOperation(value = "查询所有",response=AlarmReponse.class)
    @GetMapping("/queryAll")
    public Rest<List<AlarmResponse>> queryAll(){//more..
    }

以上代码返回了泛型Rest类型的List-AlarmResponse集合,但是却ApiOperation注解中加了response属性为AlarmResponse.class,这种情况会造成Ui只显示AlarmReponse类的属性说明,这显然是不对的,因为它把Rest的属性给忽略了,所以:

一般情况下,是不写注解@ApiOperation中的response属性值,能少写就少写,将剩下的交给springfox-swagger这个框架,由它自动解析生成接口返回类型

3.正确的返回封装类

@Data
public class Rest<T> {@ApiModelProperty(value = "服务器返回状态码", name = "code", example = "200", required = true)private Integer code;@ApiModelProperty(value = "服务状态码中文说明", name = "msg", example = "成功", required = true)private String msg;private T data;@ApiModelProperty(value = "请求id", name = "requestId", example = "112123", required = true)private String requestId;@ApiModelProperty(value = "请求时间", name = "requestTime", example = "2020-09-17 20:20:14", required = true)private String requestTime;public Rest(Integer code, String msg, String requestId, String requestTime, T o) {this.code = code;this.msg = msg;this.data = o;this.requestTime = requestTime;this.requestId = requestId;}public static Rest ok() {return ok("操作成功");}public static <T> Rest <T> ok(T data) {return new R<T>(200, "操作成功", UUID.randomUUID().toString().replace("-",""), DateUtil.getCurrentTime(), data);}public static <T> Rest <T> ok(StatusCode data) {return new R<T>(data.getCode(), data.getMsg(), UUID.randomUUID().toString().replace("-",""), DateUtil.getCurrentTime(), null);}public static Rest fail(int code, String msg) {return new R<>(code, msg, UUID.randomUUID().toString().replace("-",""), DateUtil.getCurrentTime(), null);}public static Rest fail(StatusCode statusCode) {return new R<>(statusCode.getCode(), statusCode.getMsg(), UUID.randomUUID().toString().replace("-",""), DateUtil.getCurrentTime(), null);}}

3.1 友情提示

、基础封装泛型类中,不能使用@ApiModel注解来约束该泛型类的类名称,因为泛型类一旦用该注解进行约束后,在OpenAPI的结构中,类名称就只有一个,会导致字段属性找不到的情况。错误的代码示例

/*
* 泛型类中不能使用@ApiModel注解,应该去掉
*/
@ApiModel("结果类")
public class Rest<T> {//....
}

2、针对泛型T的属性,不应该在使用@ApiModelProperty注解时,赋予example值,错误的代码示例

public class Rest<T> {/** 泛型T属性不能赋予example值,因为T有可能是实体类,这样赋值会导致生成的示例值不一致,应该交给框架去解析类结构*/@ApiModelProperty(value = "返回对象",example="Test")private T data;
}

swagger(三):统一返回结果不显示字段说明相关推荐

  1. Java黑皮书课后题第8章:*8.32(几何:三角形面积)编写一个方法,使用下面的方法头,返回一个三角形的面积。编写一个程序,提示用户输入三角形的三个点,然后显示三角形的面积

    *8.32(几何:三角形面积)编写一个方法,使用下面的方法头,返回一个三角形的面积.编写一个程序,提示用户输入三角形的三个点,然后显示三角形的面积 题目 题目描述与运行示例 破题 代码 题目 题目描述 ...

  2. 微服务架构之公共模块式中创建API接口统一返回结果ApiResult

    微服务架构之API接口统一返回结果ApiResult 一.创建公共模块common步骤 二.在api中新建一个ApiCode枚举和ApiResult 三.ApiCode与ApiResult编码如下 四 ...

  3. Web API系列(三)统一异常处理

    前面讲了webapi的安全验证和参数安全,不清楚的朋友,可以看看前面的文章,<Web API系列(二)接口安全和参数校验>,本文主要介绍Web API异常结果的处理.作为内部或者是对外提供 ...

  4. java purge_springboot之全局处理统一返回

    springboot之全局处理统一返回 简介 在REST风格的开发中,避免通常会告知前台返回是否成功以及状态码等信息.这里我们通常返回的时候做一次util的包装处理工作,如:Result类似的类,里面 ...

  5. Java全局统一返回处理

    新项目中不希望每次返回参数还要重新封装再返回,希望直接将查询数据或者返回数据统一定义进行返回,所以将新项目中的全局统一返回配置记录,备忘.同时分享给有需要的码友.(例:查询出来的对象集合直接返回,会统 ...

  6. (转) 服务接口统一返回的格式

    1.14.1 统一返回的格式 很明显地,默认情况下,我们选择了 JSON 作为统一的格式返回接口结果.这里简单说明一下选取JSON统一返回的原因: JSON当前很流行,且普通接口都采用此格式返回 JS ...

  7. 全局统一返回结果包装信息

    1.全局统一处理结果类 package com.atguigu.yygh.common.result;import io.swagger.annotations.ApiModel; import io ...

  8. springboot优雅地统一返回格式

    web后端开发,统一后端数据的返回格式是每个项目都应该做的,得益于springboot的方法拦截,因此基于springboot可以非常优雅地统一返回的数据格式,以下是实现代码(演示的返回格式:{cod ...

  9. Java黑皮书课后题第6章:*6.39(几何:点的位置)编程练习题3.32显示如何测试一个点是否在一个有向直线的左侧、右侧或在直线上,编写一个程序,输入三个点p0p1p2,显示p2是否在直线p0p1

    6.39(几何:点的位置)编程练习题3.32显示如何测试一个点是否在一个有向直线的左侧.右侧或在直线上,编写一个程序,输入三个点p0p1p2,显示p2是否在直线p0p1 题目 题目描述 编程练习题3. ...

最新文章

  1. glance系列二:glance部署及操作
  2. matlab 画图比例缩小图片大小,Matlab 画图字体,字号的设定,图片大小和比例
  3. 当我们说“分类”的时候,我们到底在说什么?
  4. php数据库缓存服务器配置,php缓存技术(减少数据库服务器压力)
  5. python-socket
  6. linux 关机时卸载sd,Linux下U盘SD卡的自动挂载和卸载
  7. javascript 中的暗物质 - 闭包
  8. qqp2011java_腾讯开放平台中实现QQ登陆的功能
  9. 【转】怎么样从一个疯狂下载者成为一个学习者!!!值得反省下的问题·~~
  10. CSDN的MarkDown编辑器插入图片时调整大小
  11. 张朝阳:社交是互联网的中原 做「狐友」是要逐鹿中原
  12. c语言中逗号是什么字符,C语言中的逗号操作符
  13. android 复制assets,Android复制Assets目录下的文件到指定目录
  14. 多线程m3u8下载器 v1.0
  15. 解决Ubuntu18.04和Win10双系统系统时间不对的问题
  16. c语言 取结构体地址,结构体赋值,对用不用取地址符有些困惑?
  17. C语言零基础——简单门票费程序
  18. 手机home键、POWER 键分别是什么
  19. 计算机视觉城市排名,计算机视觉技术量化城市变迁
  20. 基于Simulink的高速跳频通信系统抗干扰性能

热门文章

  1. 通达信V6.1分时数据文件格式分析
  2. 软文营销如何自我激励创造巨大价值
  3. java实现“进制转换-在线工具”
  4. 右键计算机没有软件删减,右键菜单太长会导致电脑卡顿?轻松删除右键菜单无用项!...
  5. 3D建模技巧:如果想用好ZBrush,必须知道这10点!
  6. 风控人不能不知的黑产大揭秘
  7. jsp页面读取txt乱码
  8. UI组件介绍(for设计师)
  9. 通过NTP协议进行时间同步
  10. pytest告警信息的处理方法