springcloud - 使用knife4j聚合微服务接口文档

简介: springcloud - 使用knife4j聚合微服务接口文档

一、介绍

在使用微服务架构开发的过程中,由于每个微服务都是独立的,因此很多开发人员在提供接口文档时,针对每一个服务也提供了独立的接口文档,

在使用容器部署的环境中缺点也更加突出,本来每一个服务容器都是通过网关访问的,它自身的ip和端口号并不被暴露出去,但是在容器部署环境下,我们不得不将服务容器的端口与主机端口进行绑定,通过主机ip+端口号访问接口文档。

在微服务环境下,不同服务的接口都是经过网关gateway作为统一入口进行转发访问的,因此不同服务的接口文档也应该有一个统一的入口。

那么有没有合适的方案,通过统一的入口,将各个微服务的接口文档进行聚合呢?答案是有的。

  • 方案一:通过网关对各个微服务的接口文档进行聚合。这样我们只需要通过访问网关就可以得到所有微服务的接口文档了。
  • 方案二:通过独立的微服务(称为接口文档微服务),该服务从注册中心中获取其他微服务,然后我们通过访问接口文档微服务就可以得到所有微服务的接口文档了。

而且巧的是,knife4j已经帮我们把这两种方案都实现了,我们通过demo对这两种方案进行演示。

二、不使用聚合文档

新建两个微服务:

  • student-service

    • 在pom中引入依赖knife4j-spring-boot-starter

      单体架构下的pom依赖.png

    • 配置文件

      单体架构下学生服务配置.png

    • 新建Knife4jConfiguration配置文件,对knife4j进行配置

      单体架构下学生服务knife4j的配置.png

    • 添加接口BoyStudentControllerGirlStudentController

      男学生Controller.png

      女学生Controller.png

    • 通过http://localhost:8001/student/doc.html访问接口文档

      单体架构学生服务接口文档.png

  • teacher-service

    • 在pom中引入依赖knife4j-spring-boot-starter

      单体架构下的pom依赖.png

    • 配置文件

      单体架构下教师服务配置.png

    • 新建Knife4jConfiguration配置文件,对knife4j进行配置

      单体架构下教师服务knife4j的配置.png

    • 添加接口ChinessTeacherControllerEnglishTeacherController

      语文教师Controller.png

      英语教师Controller.png

    • 通过http://localhost:8002/teacher/doc.html访问接口文档

      单体架构教师服务接口文档.png


不同的服务需要不同的地址访问,在微服务环境下,如果还是这样而没有统一的入口,那前端同事可能早就吃你的鱼了。

三、gateway网关聚合接口文档

在微服务环境中,网关作为各个服务的统一入口。因此可以考虑把网关也作为各个服务接口文档的统一入口。同时注册中心也是必不可少的。

student-serviceteacher-service两个服务的基础上,我们添加网关注册中心,注册中心我们以eureka为例

1. 新建eureka注册中心微服务eureka-server

  • 在pom中引入依赖

    eureka注册中心依赖.png

  • 配置文件

    eureka注册中心配置文件.png

  • 启动类

    eureka注册中心主启动.png

  • 访问注册中心,http://localhost:9001/eureka/

    eureka注册中心.png

2. 修改微服务

  • student-serviceteacher-service微服务添加pom依赖

    微服务+eureka+knife4j依赖.png

  • 修改文档配置类

    微服务架构下文档配置.png

  • 配置注册中心

    微服务对注册中心的配置.png

  • 每个微服务主启动添加注解@EnableDiscoveryClient

    微服务添加服务发现注解.png

  • 启动student-serviceteacher-service微服务后查看eureka注册中心

    eureka注册中心+两个微服务.png

3. 新建网关服务gateway-service

  • 在pom中引入依赖knife4j-spring-boot-starter

    gateway+eureka+knife4j依赖.png

  • 路由配置

    网关路由配置.png

  • 文档聚合配置

    • 资源配置

      网关knife4j资源配置.png

  • 处理器配置

    网关knife4j处理器.png

  • 主启动类

    网关主启动.png

  • 打开eureka注册中心,查看网关是否注册成功

    eureka注册中心+微服务+网关.png

  • 通过网关访问接口文档。http://localhost:9002/doc.html

    在接口文档的左上角有个下拉框,里面是我们在网关中配置的路由,在下拉框选择不同的项目,可以看到不同微服务的接口文档。

    网关查看student接口文档.png


网关查看teacher接口文档.png

四、使用独立的接口文档服务

前面我们介绍的是通过网关gateway聚合微服务接口文档,但这种方案对网关存在一定的侵入。下面我们介绍通过注册中心聚合微服务接口文档,

1. 新建接口文档微服务

  • pom文件添加依赖

    aggregation服务pom依赖.png

  • 配置文件

    aggregation服务配置文件.png

  • 启动类

    aggregation服务启动类.png

2. 启动接口文档微服务

启动服务后,通过该服务的ip和端口号,访问接口文档。如http://localhost:9003/knife4j/doc.html

可以看到,通过独立的服务聚合其他微服务接口文档这种方式更加简单,快速。

aggregation服务效果图.png

3.通过网关访问接口文档微服务

  • 在网关的配置文件中设置路由

    网关添加aggregation服务的路由.png

  • 通过网关访问接口文档

    地址:http://localhost:9002/knife4j/doc.html

    网关访问knife4j接口文档服务.png

到此为止,微服务架构下聚合微服务接口文档的两种方式我们都介绍完了,

下期再见。




纸上得来终觉浅,绝知此事要躬行。

————————————————我是万万岁,我们下期再见————————————————

相关文章
|
1月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
350 3
|
9天前
|
监控 安全 Java
Spring Cloud 微服务治理技术详解与实践指南
本文档全面介绍 Spring Cloud 微服务治理框架的核心组件、架构设计和实践应用。作为 Spring 生态系统中构建分布式系统的标准工具箱,Spring Cloud 提供了一套完整的微服务解决方案,涵盖服务发现、配置管理、负载均衡、熔断器等关键功能。本文将深入探讨其核心组件的工作原理、集成方式以及在实际项目中的最佳实践,帮助开发者构建高可用、可扩展的分布式系统。
41 1
|
16天前
|
jenkins Java 持续交付
使用 Jenkins 和 Spring Cloud 自动化微服务部署
随着单体应用逐渐被微服务架构取代,企业对快速发布、可扩展性和高可用性的需求日益增长。Jenkins 作为领先的持续集成与部署工具,结合 Spring Cloud 提供的云原生解决方案,能够有效简化微服务的开发、测试与部署流程。本文介绍了如何通过 Jenkins 实现微服务的自动化构建与部署,并结合 Spring Cloud 的配置管理、服务发现等功能,打造高效、稳定的微服务交付流程。
使用 Jenkins 和 Spring Cloud 自动化微服务部署
|
20天前
|
Kubernetes Java 微服务
Spring Cloud 微服务架构技术解析与实践指南
本文档全面介绍 Spring Cloud 微服务架构的核心组件、设计理念和实现方案。作为构建分布式系统的综合工具箱,Spring Cloud 为微服务架构提供了服务发现、配置管理、负载均衡、熔断器等关键功能的标准化实现。本文将深入探讨其核心组件的工作原理、集成方式以及在实际项目中的最佳实践,帮助开发者构建高可用、可扩展的分布式系统。
205 0
|
6月前
|
JSON Java API
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的使用
本文详细介绍了Swagger2的使用方法,包括在Spring Boot项目中的配置与应用。重点讲解了Swagger2中常用的注解,如实体类上的`@ApiModel`和`@ApiModelProperty`,Controller类上的`@Api`、`@ApiOperation`以及参数上的`@ApiParam`等。通过示例代码展示了如何为实体类和接口添加注解,并在页面上生成在线接口文档,实现接口测试。最后总结了Swagger的优势及其在项目开发中的重要性,提供了课程源代码下载链接供学习参考。
395 0
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的使用
|
6月前
|
缓存 Java API
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的配置
本文介绍了在Spring Boot中配置Swagger2的方法。通过创建一个配置类,添加`@Configuration`和`@EnableSwagger2`注解,使用Docket对象定义API文档的详细信息,包括标题、描述、版本和包路径等。配置完成后,访问`localhost:8080/swagger-ui.html`即可查看接口文档。文中还提示了可能因浏览器缓存导致的问题及解决方法。
710 0
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的配置
|
6月前
|
Java Maven 微服务
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的 maven 依赖
在项目中使用Swagger2工具时,需导入Maven依赖。尽管官方最高版本为2.8.0,但其展示效果不够理想且稳定性欠佳。实际开发中常用2.2.2版本,因其稳定且界面友好。以下是围绕2.2.2版本的Maven依赖配置,包括`springfox-swagger2`和`springfox-swagger-ui`两个模块。
217 0
|
6月前
|
前端开发 Java API
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档—— Swagger 简介
第6课介绍了在Spring Boot中集成Swagger2以展示在线接口文档的方法。随着前后端分离架构的发展,API文档成为连接前端与后端开发的重要纽带。然而,代码更新频繁导致文档难以同步维护,Swagger2解决了这一问题。通过Swagger,在线API文档不仅方便了接口调用方查看和测试,还支持开发者实时测试接口数据。本文使用Swagger 2.2.2版本,讲解如何在Spring Boot项目中导入并配置Swagger2工具,从而高效管理接口文档。
223 0
|
3月前
|
负载均衡 Java API
基于 Spring Cloud 的微服务架构分析
Spring Cloud 是一个基于 Spring Boot 的微服务框架,提供全套分布式系统解决方案。它整合了 Netflix、Zookeeper 等成熟技术,通过简化配置和开发流程,支持服务发现(Eureka)、负载均衡(Ribbon)、断路器(Hystrix)、API网关(Zuul)、配置管理(Config)等功能。此外,Spring Cloud 还兼容 Nacos、Consul、Etcd 等注册中心,满足不同场景需求。其核心组件如 Feign 和 Stream,进一步增强了服务调用与消息处理能力,为开发者提供了一站式微服务开发工具包。
486 0