Swagger3.0官方starter诞生,可以扔掉那些野生starter了
原创:猿逻辑,欢迎分享,转载请保留出处。
Swagger
是研发的好帮手,可以减少前后端的很多沟通成本。甚至在一些比较高级的公司,还能减少和测试人员的沟通成本。所以只要一个项目采用了SpringBoot框架,Swagger几乎是必选的组件。
可惜的是,Swagger只是一个工具。集成的时候,需要修改pom
文件,增加两个jar包。还要做配置,运气不好的项目还需要修改WebMvcConfigurer
中的内容。
在SpringBoot中,只要比较麻烦的事情,就可以写一个starter组件来解决。鉴于Swagger的这诸多原因,出现了许多野生的starter。看着项目中引入的,千奇百怪的jar包,洁癖的人心里总有一些不自然的。
我们来看一下,Swagger3.0
在SpringBoot中是如何使用的。
在pom.xml追加starter依赖。
<dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version>
</dependency>
在浏览器中访问:
http://localhost:8080/swagger-ui/
即可拥有了文档功能(是的,不是swagger-ui.html了)。完了?完了。就是这么简单。有人说需要在主类上加入@EnableOpenApi
注解,但其实是不需要的。
有哪些改变?
可以看到,Swagger3在SpringBoot中的配置,简单了不是一点点。更重要的是io.springfox
这样的包名,看起来就高大上,让人不由自主的产生信任的感觉。
Swagger在3.0中做了如下的事:
去掉了啰嗦的pom依赖,包括
springfox-swagger2
干掉了
@EnableSwagger2
注解,零配置去掉了不少依赖,比如guava,更清爽
其实,所有的事情都是在AutoConfig文件里做的,就像其他starter做的事情一样。从源码中,我们发现swagger和ui组件默认都是开启的。
springfox.documentation.enabled
配置,可以一键关掉它。springfox.documentation.swagger-ui.enabled
参数,可以控制ui的展示。
从Swagger的依赖中,我们看到了一个比较有意思的概念:openAPI。这玩意,竟然也有Specification了。可见,文档不仅仅在老掉牙的项目类公司,在互联网中也是痛点。
https://swagger.io/specification/
文章很长,我们暂且称specification为文档的文档 O_O。
关于认证
当然,变化也是有的。如果你的项目中用到了Spring Security这种权限控制组件,不要忘了添加白名单。类似于下面这种。
String[] SWAGGER_WHITELIST = {"/swagger-ui.html","/swagger-ui/*","/swagger-resources/**","/v2/api-docs","/v3/api-docs","/webjars/**"
};
httpSecurity.cors().antMatchers(SWAGGER_WHITELIST).permitAll()
背后的swagger地址,你访问v2也成,访问v3也成。反正我导入yapi、rap2这种API管理平台,都行得通。
集成到是变得简单了,但ApiOperation这种注解,还是一如既往的丑啊。
有时候,我们使用了JWT这样的认证方式,就需要在请求的时候,在Header构造一个token。
Swagger支持两种方式。
第一种,通过全局的Auth认证配置。
如上图,点击右上角的Auth按钮,可弹出对话框。
这个时候,你就需要搞一个SwaggerConfig
文件了。下面是完整代码。
@Configuration
public class SwaggerConfig {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().build().securitySchemes(security());}
private List<SecurityScheme> security() {ApiKey apiKey = new ApiKey("Authorization", "Authorization", "header");return Collections.singletonList(apiKey);}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("mbye api").description("nothing here").version("1.0").build();}
}
另外一种,就是在每次请求的时候,都需要手动输入一个token。类似于下面这种:
配置如下:
private List<RequestParameter> globalRequestParameters() {RequestParameterBuilder parameterBuilder = new RequestParameterBuilder().in(ParameterType.HEADER).name("Authorization").required(false).query(param -> param.model(model -> model.scalarModel(ScalarType.STRING)));return Collections.singletonList(parameterBuilder.build());
}
使用下面的代码用起来就可以了。
.globalRequestParameters(globalRequestParameters());
End
总之,整体感觉还是很不错的。可能是我的错觉,我觉得页面也流畅了不少。但由于新版本还是比较新,有不少细小的bug。比如Auth页面成功了,但在curl的请求参数里并没有值。
不过,瑕不掩瑜,swagger3还是值得一试。更何况,它的改动代价,几乎没有。
本文转载至公众号《猿逻辑》,敬请各位小伙伴关注。猿逻辑是北京一线大厂小哥小Q创建,旨在为广大程序员提供免费实战课程。关注他,it路上不迷路。
▼
推荐阅读:
一图解千愁,jvm内存从来没有这么简单过!
失联的架构师,只留下一段脚本
架构师写的BUG,非比寻常
nginx工程师,需要上承天命,下召九幽
实力解剖一枚挖矿脚本,风骚操作亮瞎双眼
又一P1故障,锅比脸圆
传统企业的人才们,先别忙着跳“互联网”!
面试官很牛,逼我尿遁
又一批长事务,P0故障谁来背锅?
一天有24个小时?别开玩笑了!
《程序人生》杀机!
可怕的“浏览器指纹”,让你在互联网上,无处可藏
2w字长文,让你瞬间拥有「调用链」开发经验
996的乐趣,你是无法想象的
作为高级Java,你应该了解的Linux知识(非广告)
必看!java后端,亮剑诛仙(最全知识点)
学完这100多技术,能当架构师么?(非广告)
Linux上,最常用的一批命令解析(10年精选)
Swagger3.0官方starter诞生,可以扔掉那些野生starter了相关推荐
- 重磅:Swagger3.0 官方 starter 诞生了,其它的都可以扔了~
点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐 19 个 github 超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 作者:飞翔的大白菜 ...
- Swagger 3.0 官方教材出炉,野生的可以扔了!
点击"开发者技术前线",选择"星标????" 让一部分开发者看到未来 链接:blog.csdn.net/wangzhihao1994/article/detai ...
- Swagger3.0快速开发及空指针异常的解决
目录 前言 一.配置类配置Swagger 二.属性文件配置Swagger 三.配置多个分组 四.配置扫描接口 五.空指针异常 前言 Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 ...
- Spring Boot中使用Swagger3.0.0版本构建RESTful APIs
文章目录 一.项目描述 二.简介 三.Swagger2.X和Swagger3.0.0 的对比 1)SpringFox 2.x 发布 2)SpringFox 3.0.0 发布 3)swagger3.0 ...
- 程序安装包制作工具 v1.0官方版
2019独角兽企业重金招聘Python工程师标准>>> 名称:程序安装包制作工具 v1.0官方版 版本:1.0更新日期:2016-06-27 大小:2.9MB软件语言:简体中文 软件 ...
- python3-Python3.7.0官方版
Python3.7.0官方版是一种相当靠谱和出众的通用型语言.Python3.7.0官方版被广泛使用,提供了丰富全面的模块,并支持sockets编程,可以非常方便快速地开发分布式应用程序,同时还有PI ...
- SpringBoot实战教程(1)| 整合Swagger3.0.0
本文教你如何在SpringBoot中整合Swagger,快速实现在线接口文档. Swagger版本:3.0.0 SpringBoot版本:2.5.6 目录 一.初始化SpringBoot项目 二.引入 ...
- VMware ESXi 7.0 正式版vSphere7.0官方原版ISO和离线定制包附加vcsa套件
VMware ESXi 7.0 正式版vSphere7.0官方原版ISO和离线定制包附加vcsa套件 vSphere 7简介:混合云的功能和技术(ESXI7.0) 20200403再更新: [http ...
- AE/PR插件AI智能背景抠像颜色键控GoodbyeGreenscreenzxb V1.6.0官方版
AE/PR插件AI智能背景抠像颜色键控GoodbyeGreenscreenzxb V1.6.0官方版|紫咖啡小站插件名称: GoodbyeGreenscreenzxb更新版本: v1.6.0版授权: ...
最新文章
- 【Android APT】注解处理器 ( 根据注解生成 Java 代码 )
- EL 表达式 JSTL 标签库
- ios中利用NSDateComponents、NSDate、NSCalendar判断当前时间是否在一天的某个时间段内。...
- java gdal postgresql_使用GDAL/OGR操作Postgresql数据库
- vscode怎么自动将px转换成vw_基于react/vue移动端适配之px自动转rem、vw
- linux源代码剖析之lib
- 【优化预测】基于matlab差分算法优化ANN预测【含Matlab源码 151期】
- 兄弟打印机内存已满清零方法_兄弟打印机清零方法大全
- [ 成为架构师系列 ] 2. 深入理解 Cookie 与 Session ,Facade 设计模式, 分布式 Session...
- Mac 输入法候选词框消失的解决方法
- Redis 数据丢失问题排查
- win7系统,打开office出现错误代码0x8007007B的解决办法
- 2013年字库产业感悟及资料书单
- 在网上疯传的行动艺术照
- 中国肥胖地图出炉,北方人腰更粗实锤了
- c++实现currency类(两种)
- IOS视频分解图片、图片合成视频
- 作为程序员的我,常用的工具软件有这些
- PSpice 模型创建与应用实例
- 微信小程序使用vant-weapp
热门文章
- 到底什么是UE设计师啊?
- 吸血鬼数字java_Java求吸血鬼数算法(通用)
- PDF限制编辑怎么解决
- 【笑小枫的SpringBoot系列】【十七】SpringBoot文件上传下载
- 北师大计算机组成原理离线作业,[北京师范大学]20秋《计算机组成原理》 离线作业...
- Vue 获取当前日期
- 我的飞桨学习赛:英雄联盟大师预测
- 【转】DotNetNuke常用扩展模块
- 导入excel,excel中带有图片,记录一下
- 小米联合金山云发布“1KM边缘计算” 携手布局“云+边缘”新赛道