Swagger
随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变成了:前端渲染、前后端分离的形态,而且前端技术和后端技术在各自的道路上越走越远。
前端和后端 唯一联系,变成了 API 接口;API文档 自然就成了前后端开发人员联系的纽带,变得尤为的重要,swagger
就是一款让你更好的书写API文档的框架。
Swagger 是一款自动生成 在线文档 + 接口调试 的工具。在 WEB 开发中不可否认的是我们需要给客户端提供 API 接口,这个时候需要借助 postman、rap 等工具 进行调试,以便于接口能正常交付给客户端人员,用过其它工具的应该知道一个 POST 请求一堆参数是非常枯燥且烦人的事情,而 Swagger 就是让你摆脱这种束缚感….
swagger
优缺点
- 集成方便,功能强大
- 在线调试与文档生成
- 代码耦合,需要注解支持,但不影响程序性能
swagger-spring-boot-starter
SpringBoot 没有为 swagger 做 starter ,所以 swagger 的配置较为麻烦。 swagger-spring-boot-starter 是 battcn 前辈对 swagger 封装做成的 starter ,它是一款建立在swagger
基础之上的工具包,利用 SpringBoot 自动装配的特性,简化了传统swagger
的繁琐配置。
环境/版本一览:
- 开发工具:Intellij IDEA 2018.2.2
- springboot: 2.0.5.RELEASE
- jdk:1.8.0_171
- maven:3.3.9
- swagger-spring-boot-starter:2.1.0-RELEASE
1、pom.xml
1 | <dependencies> |
2、application.yml
配置spring.swagger.enabled
开启swagger
的使用,如果在生产环境中不想用可以在对应的profile
下面将它设置为spring.swagger.enabled=false
,这样一来接口就不存在暴露的风险
1 | spring: |
3、entity
swagger
提供了非常齐全的注解,为POJO
提供了@ApiModel
、@ApiModelProperty
,以便更好的渲染最终结果
1 | package com.fatal.entity; |
4、controller
1 | package com.fatal.controller; |
##5、显示
启动工程,打开浏览器输入 http://localhost:8080/swagger-ui.html 即可
6、笔记
注解描述
- @Api: 描述
Controller
- @ApiIgnore: 忽略该
Controller
,指不对当前类做扫描 - @ApiOperation: 描述
Controller
类中的method
接口 - @ApiParam: 描述单个入参信息,与
@ApiImplicitParam
不同的是,他是写在参数左侧的。如(@ApiParam(name = “username”,value = “用户名”) String username) - @ApiModel: 描述
POJO
对象 - @ApiModelProperty: 描述
POJO
对象中的属性值 - @ApiImplicitParam: 描述单个入参信息,如果请求参数在url上,@ApiImplicitParam 上加paramType = “path”
- @ApiImplicitParams: 描述多个入参信息
- @ApiResponse: 描述单个出参信息
- @ApiResponses: 描述多个出参信息
- @ApiError: 接口错误所返回的信息
- 当我们指定了 Swagger 的扫描路径后,很多注解我们不写,它会取参数信息为默认值。
- 2.X 版本后无需添加 @EnableSwagger2Doc
参考资料
更多使用方式请参考 swagger-spring-boot
一起来学SpringBoot | 第十一篇:集成Swagger在线调试
总结
SpringBoot
的知识已经有前辈在我们之前探索了。比较喜欢的博主有:唐亚峰 | Battcn、方志朋的专栏、程序猿DD、纯洁的微笑。对这门技术感兴趣的可以去他们的博客逛逛。谢谢他们的分享~~
以上文章是我用来学习的Demo
,都是基于 SpringBoot2.x
版本。
源码地址: https://github.com/ynfatal/springboot2-learning/tree/master/chapter17_2