这里只简单的说一下swagger的传值,返回值时注解的使用演示。相关注解及说明见其他文章

接收参数方式1

我们常规接收参数,可以使用一个类,类里面把属性作为接收的参数,使用注解对属性进行说明。但是这种传参方式,我调试的时候,支持前端的传参方式为:form-data

例子如下:

因为这种方式我们用的不多,所以这里就不展开来讲

一般我们前端都是传json数据过来后端,后端接收参数是直接用JSONObject或Map所以主要讲一下第二种

接收参数方式2

前端传参:json

后端接收:jsonObject或Map

对于这种JSONObject接收参数的,我们不能用第一种方式,此时应该用另外两个注解来实现

注意:dataType属性默认是String,如果要换成其他,比如int属性,不能直接写int或Interger,一定要加上全类名,不然会被解析成string类型。

代码如下:

 1      /**
2 * 测试接口
3 *
4 * @param jsonObject 前端传过来的参数
5 * @return 无
6 */
7 @PostMapping("/test")
8 @ApiOperation(value = "测试接口", httpMethod = "POST", notes = "测试,这是一个后端的测试接口")
9 @ApiImplicitParams({
10 @ApiImplicitParam(value = "这是具体的参数1说明", name = "parm1", required = true, dataType = "String",
11 paramType = "query"),
12 @ApiImplicitParam(value = "参数二是string类型", name = "parm2", required = true, dataType = "String",
13 paramType = "query"),
14 @ApiImplicitParam(value = "参数三是int类型", name = "parm3", required = true, dataType = "java.lang.Integer",
15 paramType = "query"),
16 @ApiImplicitParam(value = "参数四是布尔类型", name = "parm4", required = true, dataType = "java.lang.Boolean",
17 paramType = "query"),
18 @ApiImplicitParam(value = "参数五:0表示成功,1表示失败", name = "parm5", required = true, dataType = "String",
19 paramType = "query")
20 })
21 public JSONObject testParm(JSONObject jsonObject) {
22 ​
23 return null;
24 ​
25 }
26 ​
27 }

这样子看,可能显得代码略显臃肿,但是我们写代码的时候,把它折叠起来就好了,效果如下

接下来,看一下swagger中的具体效果图

响应参数

请求参数我们了解了,接下来我们看一下响应参数,首先所有的响应都要基于ResponseVo这个类。

 
 1 @Data
2 @ApiModel()
3 public class ResponseVo<T> implements Serializable {
4 @ApiModelProperty(value = "默认时间")
5 private String defaultTimeZone;
6 @ApiModelProperty(value = "成功为1,失败为0")
7 private Integer result;
8 @ApiModelProperty(value = "返回值信息")
9 private T data;
10 @ApiModelProperty(value = "返回给前端的语言,默认是:zh_CN")
11 private String lang;
12 @ApiModelProperty(value = "时间,默认是:Asia/Shanghai")
13 private String userTimeZone;
14 ​
15 ​
16 public ResponseVo(Integer result, T data) {
17 this(result, "Asia/Shanghai", "Asia/Shanghai", "zh_CN", data);
18 }
19 ​
20 ​
21 public ResponseVo(Integer result, String defaultTimeZone, String userTimeZone, String lang, T data) {
22 this.defaultTimeZone = defaultTimeZone;
23 this.result = result;
24 this.userTimeZone = userTimeZone;
25 this.lang = lang;
26 this.data = data;
27 }
28 ​
29 @Override
30 public String toString() {
31 return JSONObject.toJSONString(this);
32 }
33 }

 

swagger效果图

swagger调试效果图:

返回实列1

ok,接下来,我们进行一些复杂的操作,我们尝试模拟下面这里复杂的类型返回

可以看出 formFieldDataOrder是一个数组

tableData是一个对象

formFieldData是一个对象

java代码

首先创建两个类,然后在ResponseDataVo里面定义三个属性,,其中数组的用定义为List,对象定义为具体的类

注意:定义为返回值的类,一定要加上@ApiModel注解

返回值设置

swagger效果:

返回实列2

接下来,我们往里面添加数据

老样子,创建IslandId类和Name类,在FormFieldData类中设置这两个对象属性

设置对应的返回值

swagger效果图

swagger调试结果图

返回实列3

接下来,我们完善一下Island里面的属性

定义IslandId对象里面的属性

设置对应的值

swagger效果图

调试结果

到这里,swagger注解的使用算是入门了,注意,其中还是有很多细节要注意的,由于时间问题,没有一一列举出来。欢迎大家点评指正。

Swagger3注解使用的更多相关文章

  1. SpringBoot整合Swagger3生成接口文档

    前后端分离的项目,接口文档的存在十分重要.与手动编写接口文档不同,swagger是一个自动生成接口文档的工具,在需求不断变更的环境下,手动编写文档的效率实在太低.与swagger2相比新版的swagg ...

  2. SpringBoot第十一集:整合Swagger3.0与RESTful接口整合返回值(2020最新最易懂)

    SpringBoot第十一集:整合Swagger3.0与RESTful接口整合返回值(2020最新最易懂) 一,整合Swagger3.0 随着Spring Boot.Spring Cloud等微服务的 ...

  3. Spring Boot集成Springfox Swagger3和简单应用

    摘要:Springfox Swagger可以动态生成 API 接口供前后端进行交互和在线调试接口,Spring Boot 框架是目前非常流行的微服务框架,所以,在Spring Boot 项目中集成Sp ...

  4. SpringBoot: 后台接口文档 - 基于Swagger3

    目录 前言:什么是Swagger 起步:(只需简单的3步) 加载依赖 添加注解@EnableOpenApi 启动SpringBoot,访问Swagger后台界面 配置:基于Java的配置 注解:Swa ...

  5. gateway聚合swagger3统一管理api文档

    springboot微服务整合swagger3方法很简单,下文会演示.但是在分布式项目中如果每个微服务都需要单独的分开访问获取接口文档就不方便了,本文将详细讲解springcloud gateway网 ...

  6. 基于spring注解AOP的异常处理

    一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...

  7. [Spring]IoC容器之进击的注解

    先啰嗦两句: 第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还是github的样式比较顺眼. 概述 Spring2.5 引入了注解. 于是,一个问题产生了:使用注解方式注入 JavaB ...

  8. Android注解使用之通过annotationProcessor注解生成代码实现自己的ButterKnife框架

    前言: Annotation注解在Android的开发中的使用越来越普遍,例如EventBus.ButterKnife.Dagger2等,之前使用注解的时候需要利用反射机制势必影响到运行效率及性能,直 ...

  9. Android注解使用之注解编译android-apt如何切换到annotationProcessor

    前言: 自从EventBus 3.x发布之后其通过注解预编译的方式解决了之前通过反射机制所引起的性能效率问题,其中注解预编译所采用的的就是android-apt的方式,不过最近Apt工具的作者宣布了不 ...

随机推荐

  1. 如何重置电信悦 me 智能网关

    如何重置电信悦 me 智能网关 重置电信网关密码 电信悦 me 智能网关密码忘记了怎么办? 首先,得要知道默认终端配置地址和默认终端配置密码. 可以从无线路由器背面标签得知. 如果不知道密码了,可以通 ...

  2. CSS3 & Grid Layout All In One

    CSS3 & Grid Layout All In One W3C https://www.w3.org/TR/css-grid-1/ Grid Layout is a new layout ...

  3. vscode Paste Image插件使用

    Paste Image 在编写md需要插入图片,这个插件可以将粘贴板的图片保存到本地资源 假如我在/readme.md中编写文档,我需要将粘贴板的图片放在/images/下面,配置两个关键配置即可: ...

  4. 新年狂欢高倍币,1万枚VAST拿到手软

    新一年NGK推出了新币VAST,成为了当前最瞩目的一颗星.有人认为VAST有价无市,有人认为VAST价值巨大,潜力无限.总之,众说风云! 选择数字货币,当然是挑选有价值的货币,从内外价值入手. 一.币 ...

  5. 10月上线的NGK global有怎样的发展前景?

    随着NGK global 10月份的上线时间将近,社区中也开始纷纷讨论.预测起NGK global上线后的表现,对此小编也有一些自己的理解,就此分享给大家. 在基于实体生态的赋能下,NGK globa ...

  6. vue子组件的样式没有加scoped属性会影响父组件的样式

    scoped是一个vue的指令,用来控制组件的样式生效区域,加上scoped,样式只在当前组件内生效,不加scoped,这个节点下的样式会全局生效. 需要注意的是:一个组件的样式肯定是用来美化自己组件 ...

  7. C++Template 模版的本质

    我想知道上帝的構思,其他的都祇是細節.                                                                                  ...

  8. 看完我的笔记不懂也会懂----bootstrap

    目录 Bootstrap笔记 知识点扫盲 容器 栅格系统 源码分析部分 外部容器 栅格系统(盒模型)设计的精妙之处 Bootstrap笔记 写在开始: 由于我对AngulaJS的学习只是一个最浅显的过 ...

  9. C++数组的存储与初始化

    下面随笔给出C++数组的存储与初始化的细节内容. 数组的存储与初始化 一维数组的存储 数组元素在内存中顺次存放,它们的地址是连续的.元素间物理地址上的相邻,对应着逻辑次序上的相邻. 例如:

  10. 公钥基础设施PKI利用SRAM物理不可克隆函数PUF实现芯片标识唯一性

    下面给出PKI利用SRAM PUF实现芯片标识唯一性的方法思路: PKI利用SRAM PUF实现芯片标识唯一性的方式 (1)使用PUF原因 物理上不可克隆函数利用硅制造的自然变化来产生每个芯片统计上唯 ...