教你怎么用SpringBoot整合Swagger作为API

这篇文章主要介绍了教你怎么用SpringBoot整合Swagger作为API,文中有非常详细的代码示例,对正在学习java的小伙伴们有很好的帮助,需要的朋友可以参考下

前言

相信无论是前端还是后端开发,都或多或少地被接口文档折磨过。前端经常抱怨后端给的接口文档与实际情况不一致。后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新。其实无论是前端调用后端,还是后端调用后端,都期望有一个好的接口文档。但是这个接口文档对于程序员来说,就跟注释一样,经常会抱怨别人写的代码没有写注释,然而自己写起代码起来,最讨厌的,也是写注释。所以仅仅只通过强制来规范大家是不够的,随着时间推移,版本迭代,接口文档往往很容易就跟不上代码了。而自动生成接口文档的框架就是我们今天的主角Swagger!

一、基本使用

使用时需要导入下面的依赖:

io.springfoxspringfox-swagger22.9.2io.springfoxspringfox-swagger-ui2.9.2

然后书写下面的配置类即可完成配置!

@Configuration @EnableSwagger2 //开启swagger2 public class SwaggerConfig { }

浏览器访问http://localhost:8910/swagger-ui.html,即可可以看到下面的界面:

二、自定义描述内容

@Configuration @EnableSwagger2 //开启swagger2 public class SwaggerConfig { @Bean public Docket docket(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) //是否启动swagger // .enable(false) .groupName("卢泽龙") .select() //RequestHandlerSelectors:配置要扫描的接口方式 // basePackage : 指定要扫描的包 .apis(RequestHandlerSelectors.basePackage("org.lzl.laboratory.controller")) // any:扫描全部 // .apis(RequestHandlerSelectors.any()) // none:不扫描 // .apis(RequestHandlerSelectors.none()) // withClassAnnotation:扫描类上的注解 // .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class)) // withMethodAnnotation:扫描方法上的注解 // .apis(RequestHandlerSelectors.withMethodAnnotation(GetMapping.class)) //path() 过滤什么路径 // .paths(PathSelectors.ant("/lzl/**")) .build(); } //配置swagger信息 ==> apiInfo private ApiInfo apiInfo(){ //作者信息 Contact contact = new Contact("卢泽龙","https://blog.csdn.net/MoastAll","382491212@qq.com"); return new ApiInfo( "云上实验室的api文档说明", "abcdefg", "v1.0", "https://blog.csdn.net/MoastAll", contact, "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0", new ArrayList() ); } }

其中如果有这样的需求:在dev,test环境中开启swagger,其他环境不开启swagger,我们只需要给Docket加上下面的environment参数,再用acceptsProfiles方法来判断环境是否符合要求!

使用的效果为:

三、给下面的models和接口一些提示信息

1.给实体类加入下面的注解

http://localhost:8910/swagger-ui.html的models就会呈现下面的界面:

2.给controller加上下面的注解

就会出现下面的提示信息:

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...