对于现在前后端分离的架构,在调用API的时候,都需要使用token或者access-token的参数在header中,那么在使用Swagger2的时候想在所有的API文档的前部添加公共的需要传入的参数,研究了半天,终于成功了,分享一下;
-
swagger2的依赖:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
2.创建config配置类,用于配置swagger的相关信息:
2.1 使用的注解:
@Configuration -- 标志配置类;
@EnableSwagger2 -- 启用swagger2;
--- 我看在网上,还有使用@EnableWebMvc的注解,但我没有用,也是可以滴;
2.3: Docket对象:该对象用来配置文档显示的主要的信息;比如:扫描的controller包;以及该组API文档显示的名称;该组需要过滤的接口;公共参数的设置;上配置:
注释.png
本来想上传代码,但是这个文本编译器显示的不是很理想,就直接上图片吧;
公共参数部分,有的大牛会在Docket外面创建一个static静态的代码块存放,并初始化。但是我试了以后会报空指针异常,所以就放在Docket里面;defaultValue()占位符可以不用要;
Docket里面重要的是select()后面的apis(Predicates.or(RequestHandlerSelectors.basePackage(""))) --该选择用于定义该Docket扫描的controller包,就可以将不同的controller分组使用,比如App的controller api 或者 后台的api,通过groupName()分组命名;Paths(),里面定义该分组需要过滤的API,可以使用正则匹配,也可以选择any(),所有的。如果在这里包配置错了或者路径匹配错了,启动的时候就会报空指针异常,导致项目启动失败;通过globalOperationParameters()选项,将通用的参数集合添加进来,就可以了启用了;
对应的ui上的页面上,上图:
页面.png
3:ApiInfo对象:
该对象很简单,就是定义左上角的信息,比如该文档的名称,对应的描述,以及作者的信息等;
4 这次踩得坑比较多的就是空指针异常,以及页面显示不出来,甚至接口显示不出来的状况。这些错误,不出意外的话都是配置错误。还有就是static静态代码块,建议不要使用静态代码块初始化,否则会报错;
网友评论