手机扫一扫访问本页内容

微信扫描点右上角"···"分享到好友或朋友圈

关闭
微信扫一扫可打开小程序

微信长按图片或搜“分享录”可打开小程序

关闭
Java,技术 ,

全方位认识Swagger

本文图文带你全面认识Swagger。

作为Java应用程序开发人员对丝袜哥(Swagger音译😂)应该都很熟悉,但在官网你会发现很难找到我们在项目中使用那个熟悉的Swagger。

看源码库也会发现那些分支都不是很熟悉。

打开swagger-ui看一下,看前面的还算可以接受,但看到下面的版本号就有点难以接受了,因为swagger 3.0明明是最近一两年才发布的,但这里显示2017年就已经发布了!

再看下面那个归类到Java的swagger-core分支,龌蹉当前最新稳定版本竟然是2.1.7!

这不科学呀,很多人早已从丝袜哥2.0迁到3.0了!

这得从我们引入依赖包说起,Maven(pom.xml):

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>x.x.x</version>
</dependency>

Gradle(build.gradle):

implementation 'io.springfox:springfox-swagger2:x.x.x'

从上面引入依赖包可以看到是通过io.springfox来引入丝袜哥的。

SpringFox网站这样描述:“使用Sprig自动构建JSON API文档(Automated JSON API documentation for API’s built with Spring)”,从Springfox文档确实可以看到最新版本是3.0,也可以看到Springfox的目标是扩展诸如swagger、RAML和jsonapi这些基于JSON API标准规范和文档的不断发展的支持(To extend support for a number of the evolving standards targeted at JSON API specification and documentation such as: swagger, RAML and jsonapi.),也就是说丝袜哥只是Springfox的一个实现而已。

所以基于Springfox实现的丝袜哥版本号是按照springfox-swagger2的版本号而非swagger官网的版本号。

另外,Springfox最初是由Marty Pitt创建的名为swagger-springmvc的项目发展而来的。

回过头再来看看丝袜哥,官网这样描述:“使用开源Swagger和专业工具帮助开发人员、团队和企业简化API开发。从Swagger可以找到如何帮你按需设计和记录各种API(Simplify API development for users, teams, and enterprises with the Swagger open source and professional toolset. Find out how Swagger can help you design and document your APIs at scale.)”,也可以看到Swagger 包含一套基于 OpenAPI 规范(OpenAPI Specification,OAS)构建的工具,开源的部分包括:

  • OpenAPI Specification:API规范,规定了如何描述一个系统的API
  • Swagger Codegen:用于通过API规范生成服务端和客户端代码
  • Swagger Editor:用来编写API规范
  • Swagger UI:用于展示API规范

非开源的部分包括:

  • Swagger Hub:云服务,相当于Editor + Codegen + UI
  • Swagger Inspector:手动测试API的工具
  • SoapUI Pro:功能测试和安全测试的自动化工具
  • LoadUI Pro:压力测试和性能测试的自动化工具

Springfox源码库可以看到,3.0版本开始移除了springfox-swagger2依赖和@EnableSwagger2注解、移除了guava和第三方lib、添加springfox-boot-starter依赖和@EnableOpenApi注解等。

也就是说3.0及以后版本引入丝袜哥得稍微改一下,Maven(pom.xml):

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

Gradle(build.gradle):

implementation "io.springfox:springfox-boot-starter:<version>"

好了,关于丝袜哥就说到这里,更多内容可以看我的Swagger系列


历史上的今天:

展开阅读全文


上一篇:

下一篇:

您还可以访问本站的小程序、公众号等所有端,或者下载APP, 在小程序、APP上可以评论文章以及保存图片还有在线客服哦,如您有任何疑问或建议可向作者提出意见反馈
关注我的公众号每天为您分享各类有用信息
扫码打开小程序可评论文章保存图片,在“我的”有实时在线客服哦,看效果?
分享录多端跨平台系统
分享录交流群