原创:猿逻辑,欢迎分享,转载请保留出处。

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了相关推荐

  1. 重磅:Swagger3.0 官方 starter 诞生了,其它的都可以扔了~

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐 19 个 github 超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 作者:飞翔的大白菜 ...

  2. Swagger 3.0 官方教材出炉,野生的可以扔了!

    点击"开发者技术前线",选择"星标????" 让一部分开发者看到未来 链接:blog.csdn.net/wangzhihao1994/article/detai ...

  3. Swagger3.0快速开发及空指针异常的解决

    目录 前言 一.配置类配置Swagger 二.属性文件配置Swagger 三.配置多个分组 四.配置扫描接口 五.空指针异常 前言 Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 ...

  4. Spring Boot中使用Swagger3.0.0版本构建RESTful APIs

    文章目录 一.项目描述 二.简介 三.Swagger2.X和Swagger3.0.0 的对比 1)SpringFox 2.x 发布 2)SpringFox 3.0.0 发布 3)swagger3.0 ...

  5. 程序安装包制作工具 v1.0官方版

    2019独角兽企业重金招聘Python工程师标准>>> 名称:程序安装包制作工具 v1.0官方版 版本:1.0更新日期:2016-06-27 大小:2.9MB软件语言:简体中文 软件 ...

  6. python3-Python3.7.0官方版

    Python3.7.0官方版是一种相当靠谱和出众的通用型语言.Python3.7.0官方版被广泛使用,提供了丰富全面的模块,并支持sockets编程,可以非常方便快速地开发分布式应用程序,同时还有PI ...

  7. SpringBoot实战教程(1)| 整合Swagger3.0.0

    本文教你如何在SpringBoot中整合Swagger,快速实现在线接口文档. Swagger版本:3.0.0 SpringBoot版本:2.5.6 目录 一.初始化SpringBoot项目 二.引入 ...

  8. VMware ESXi 7.0 正式版vSphere7.0官方原版ISO和离线定制包附加vcsa套件

    VMware ESXi 7.0 正式版vSphere7.0官方原版ISO和离线定制包附加vcsa套件 vSphere 7简介:混合云的功能和技术(ESXI7.0) 20200403再更新: [http ...

  9. AE/PR插件AI智能背景抠像颜色键控GoodbyeGreenscreenzxb V1.6.0官方版

    AE/PR插件AI智能背景抠像颜色键控GoodbyeGreenscreenzxb V1.6.0官方版|紫咖啡小站插件名称: GoodbyeGreenscreenzxb更新版本: v1.6.0版授权: ...

最新文章

  1. 【Android APT】注解处理器 ( 根据注解生成 Java 代码 )
  2. EL 表达式 JSTL 标签库
  3. ios中利用NSDateComponents、NSDate、NSCalendar判断当前时间是否在一天的某个时间段内。...
  4. java gdal postgresql_使用GDAL/OGR操作Postgresql数据库
  5. vscode怎么自动将px转换成vw_基于react/vue移动端适配之px自动转rem、vw
  6. linux源代码剖析之lib
  7. 【优化预测】基于matlab差分算法优化ANN预测【含Matlab源码 151期】
  8. 兄弟打印机内存已满清零方法_兄弟打印机清零方法大全
  9. [ 成为架构师系列 ] 2. 深入理解 Cookie 与 Session ,Facade 设计模式, 分布式 Session...
  10. Mac 输入法候选词框消失的解决方法
  11. Redis 数据丢失问题排查
  12. win7系统,打开office出现错误代码0x8007007B的解决办法
  13. 2013年字库产业感悟及资料书单
  14. 在网上疯传的行动艺术照
  15. 中国肥胖地图出炉,北方人腰更粗实锤了
  16. c++实现currency类(两种)
  17. IOS视频分解图片、图片合成视频
  18. 作为程序员的我,常用的工具软件有这些
  19. PSpice 模型创建与应用实例
  20. 微信小程序使用vant-weapp

热门文章

  1. 到底什么是UE设计师啊?
  2. 吸血鬼数字java_Java求吸血鬼数算法(通用)
  3. PDF限制编辑怎么解决
  4. 【笑小枫的SpringBoot系列】【十七】SpringBoot文件上传下载
  5. 北师大计算机组成原理离线作业,[北京师范大学]20秋《计算机组成原理》 离线作业...
  6. Vue 获取当前日期
  7. 我的飞桨学习赛:英雄联盟大师预测
  8. 【转】DotNetNuke常用扩展模块
  9. 导入excel,excel中带有图片,记录一下
  10. 小米联合金山云发布“1KM边缘计算” 携手布局“云+边缘”新赛道