Knife4j实现微服务聚合API文档实战

Knife4j实现微服务聚合API文档实战

SpringBoot集成knife4j

想要构建一个单体是的API文档其实非常简单。只需要构建一个SpringBoot项目,添加knife4j的maven依赖如下:

<!-- swagger -->
<dependency>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-annotations</artifactId>
    <version>1.5.20</version>
    <scope>provided</scope>
</dependency>
<!-- swagger-ui -->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>2.0.9</version>
</dependency>

SpringBoot的其他配置就省略了,自行查阅。启动项目即可,访问http://localhost/doc.html,如下图

在这里插入图片描述

微服务聚合API文档

在微服务环境下,我们每个服务都有各自的API文档,这样访问起来非常麻烦,那么此时我们就需要使用聚合API文档了。knife4j也具备聚合文档的能力,我们需要创建一个独立的SpringBoot聚合服务,然后添加一下maven依赖:

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-aggregation-spring-boot-starter</artifactId>
    <version>2.0.8</version>
</dependency>

微服务聚合模式分为Disk、Cloud、Eureka、Nacos四种模式,我这里先以Cloud模式为例。

配置yml

# knife4j配置
knife4j:
  # 开启聚合
  enableAggregation: true
  # Cloud模式
  cloud:
  	# 开启
    enable: true
    # 路由配置
    routes:
      - name: easypoi测试
        uri: localhost:8001
        location: /v2/api-docs?group=WEB接口文档1.0版本
      - name: kafka测试
        uri: localhost:8002
        location: /v2/api-docs?group=WEB接口文档1.0版本

启动项目如下:
在这里插入图片描述

注意的是,这边location必须使用如下图所示的内容,否则无法识别,会报异常

在这里插入图片描述

微服务聚合模式

微服务聚合方式分为Disk、Cloud、Eureka、Nacos四种模式,只是配置不同,都很简单

Disk本地模式

开发者只需要在Spring Boot的项目中存在OpenAPI规范的JSON文件即可进行聚合

配置yml配置文件如下:

server:
  port: 9090
knife4j:
  enableAggregation: true
  disk:
    enable: true
    routes:
      - name: 用户
        location: classpath:openapi/user.json

配置目录如下:

在这里插入图片描述

启动后效果如下:

在这里插入图片描述

Cloud模式聚合

Cloud(云端)模式和Disk模式大同小异,主要的区别是获取OpenAPI规范的方式换成了基于HTTP接口而已

配置yml配置文件如下:

# knife4j配置
knife4j:
  # 开启聚合
  enableAggregation: true
  # Cloud模式
  cloud:
  	# 开启
    enable: true
    # 路由配置
    routes:
      - name: easypoi测试
        uri: localhost:8001
        location: /v2/api-docs?group=WEB接口文档1.0版本
      - name: kafka测试
        uri: localhost:8002
        location: /v2/api-docs?group=WEB接口文档1.0版本

Eureka注册中心聚合

从Eureka注册中心进行聚合的模式和Cloud模式大同小异,主要的区别是通过serviceName来替代了真实的目标服务地

knife4j:
  enableAggregation: true
  eureka:
    enable: true
    serviceUrl: http://localhost:10000/eureka/
    routes:
      - name: easypoi测试
        serviceName: service-easypoi
        location: /v2/api-docs?group=WEB接口文档1.0版本
        servicePath: /easypoi
      - name: kafka测试
        serviceName: service-kafka
        location: /v2/api-docs?group=WEB接口文档1.0版本
        servicePath: /kafka

Nacos注册中心聚合

Nacos的配置和Eureka几乎一模一样,唯一不同的区别是在yml进行配置的时候,使用的是knife4j.nacos开头,其他基本都是一样。

knife4j:
  enableAggregation: true
  nacos:
    enable: true
    serviceUrl: http://localhost:8848/
    routes:
      - name: easypoi测试
        serviceName: service-easypoi
        location: /v2/api-docs?group=WEB接口文档1.0版本
        servicePath: /easypoi
      - name: kafka测试
        serviceName: service-kafka
        location: /v2/api-docs?group=WEB接口文档1.0版本
        servicePath: /kafka
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值