当前位置: 首页 > 后端技术 > Java

微服务如何聚合API文档?本期节目~

时间:2023-04-01 23:54:38 Java

大家好,我是陈布才~这是《Spring Cloud 进阶》的第22篇,之前的文章如下:五十五张图告诉你微服务的灵魂摆渡人Nacos有多强。?openFeign的致命连环9题,谁受得了?阿里面试问:Nacos、Apollo、Config配置中心如何选择?这10个维度告诉你!阿里面试失败:5类微服务注册中心如何选择?这些维度告诉你!阿里的限流神器Sentinel杀连载17题?和7个分布式事务方案相比,我还是更喜欢阿里开源的Seata。真香!(原理+实战)SpringCloudGateway致命系列10题?SpringCloudGateway整合阿里哨兵网关限流实践!分布式链接跟踪SpringCloudSleuthDeadlyChain9个问题?由于我使用SkyWalking进行链接跟踪,所以我睡得很香!3本书,7万+字,10篇文章,《Spring Cloud 进阶》基础版PDF妹子永远不懂OAuth2.0,今天集成SpringCloudSecurity来讲解一次!OAuth2.0在行动!使用JWT令牌进行身份验证!OAuth2.0在行动!玩转认证,资源服务异常,自定义这些风骚操作!实际干货!SpringCloudGateway集成OAuth2.0实现分布式统一认证授权!字节面试问:对于大量跨库跨表的数据依赖问题有哪些解决方案?实战!退出时如何通过外力使JWTtoken失效?实战!SpringCloudGateway集成RBAC权限模型,实现动态权限控制!实战!阿里神器Seata实现TCC模式解决分布式事务,真香!实战!openFeign是如何实现全链接JWTtoken信息不丢失的呢?微服务下的蓝绿发布、滚动发布、灰度发布等方案一定要了解!今天的文章介绍微服务如何聚合Swagger实现接口文档管理。文章目录如下:为什么需要聚合?有很多微服务模块。如果不聚合文档,需要单独访问一个SwaggerUI接口来访问各个服务的API文档。这能被客户接受吗?反正作为一个强迫症,我是接受不了的。。。既然用了微服务,就应该有一个统一的API文档入口。如何聚合?统一的文档入口显然应该聚合到网关中,网关的入口统一映射到各个模块。本文使用SpringCloudGateway聚合Swagger生成API文档。案例源码结构如下:本文只介绍如何聚合Swagger,不会介绍网关、注册中心等,不明白的请看陈老师上一篇文章。单个服务如何聚合Swagger?这里的单服务不包括网关,需要单独配置。单个服务聚合其实很简单,就是普通的SpringBoot集成了Swagger,但是微服务模块很多,每个微服务无法集成,所以可以自定义一个swagger-starter,然后每个微服务都依赖这个starter。.详细步骤如下:1.创建swagger-starter自定义starter这里就不介绍了,都是基础知识;目录结构如下:1.添加依赖Chen不喜欢Swagger原生的UI界面,所以他使用了一个看起来还不错的UI界面,依赖如下:io.springfoxspringfox-boot-startercom.github.xiaoyminswagger-bootstrap-uiUI界面,每个人的审美不同,选择自己喜欢的就好。2.自动配置类配置SwaggerChen将各个服务的API信息提取到一个属性类SwaggerProperties中,然后只需要在各个服务的配置文件中指定即可。@Data@ConfigurationProperties(prefix=SwaggerProperties.PREFIX)@Component@EnableConfigurationPropertiespublicclassSwaggerProperties{publicstaticfinalStringPREFIX="spring.swagger";//封装privateStringbasePackage;//作者相关信息privateAuthorauthor;//API相关信息privateApiInfoapiInfo;@DatapublicstaticclassApiInfo{字符串标题;字符串描述;字符串版本;字符串termsOfServiceUrl;字符串许可证;字符串licenseUrl;}@DatapublicstaticclassAuthor{私有字符串名称;私人字符串电子邮件;私有字符串url;}}Swagger的配置其实很简单,分为以下几个部分:API文档基本信息配置授权信息配置(基于OAuth2的认证配置)API文档配置无非就是配置文档的基本信息,比如documenttitle,author,contactinformation.....代码如下:授权信息的配置也很简单,就是在全局信息的请求头配置一个可以放token的地方。令牌可以在这里设置。好了,swagger-starter的关键代码介绍完毕,详细配置见源码。案例源码已上传至GitHub,关注公众号:码猿技术专栏,回复key:9529获取!2、微服务指的是swagger-starter。引用单个微服务非常简单。只需要添加如下依赖:cn.myjszlswagger-starter接下来只需要在配置文件。例如订单服务的配置如下:好了,至此单个服务的配置就完成了。此时我们可以验证一下,直接访问:http://localhost:3002/swagger...结果如下:网关是如何聚合Swagger的?网关聚合的思路很简单,就是从路由中获取微服务的访问地址,然后与/v2/api-docs拼接。同样需要添加两个Swagger的依赖,如下:io.springfoxspringfox-boot-startercom.github.xiaoyminswagger-bootstrap-ui创建GatewaySwaggerResourcesProvider实现SwaggerResourcesProvider,重写其中的get方法,代码如下:案例源码已上传到GitHub,关注公众号:码猿技术专栏,回复key:9529获取!好了,到这里网关的配置就完成了。这时候启动网关、订单、库存服务,直接访问网关的文档:http://localhost:3001/doc.html,结果如下:API文档有用功能介绍不得不说的是这个SwaggerUI界面比较简单易用,个人使用还是可以的。1.搜索功能右上角的搜索功能可以根据界面说明搜索相关界面信息,如下图:2.离线文档可以直接复制文档的MarkDown形式,转成Html或PDF生成离线文档,如下图:3.Token配置在访问需要鉴权的接口时,可以配置token,这样token会全局生效,以后不需要再配置了每次请求,如下:4.配置并缓存该文件的所有配置,包括请求参数和授权单卡等信息都被缓存,也就是说你配置一次,打开时也会默认存在下次吧。5.全局参数配置对于一些全局参数,比如请求头中需要携带请求客户端、版本号等信息,可以在全局参数中进行配置,如下:总结本文介绍微服务集成网关聚合swagger文档,开发很实用。最后说一句(勿嫖,求关注)。陈的每篇文章都是用心输出。他写了3个专栏并将它们组织成PDF。获取方式如下:【技术专栏】回复关键词SpringCloud进阶获取!《Spring Boot 进阶》PDF:关注公众号:【码猿技术专栏】回复关键词SpringBoot进阶获取!《Mybatis 进阶》PDF:关注公众号:【码猿技术专栏】回复关键词Mybatis进阶获取!如果本文对您有帮助或启发,请点赞、观看、转发、收藏,您的支持是我坚持下去的最大动力!关注公众号:【码猿技术专栏】,在公众号有真棒粉丝福利,回复:进群,可以进技术讨论群,和大家一起讨论技术,吹牛!