文档
- 快速开始
- Knife4j 4.0 迭代计划
- 如何贡献代码
- 序章
- 社区
- 增强特性
- 3.1 增强模式
- 3.2 i18n 国际化
- 3.3 接口添加作者
- 3.4 自定义文档
- 3.5 访问权限控制
- 3.6 接口排序
- 3.7 分组排序
- 3.8 请求参数缓存
- 3.9 动态请求参数
- 3.10 导出离线文档
- 3.11 过滤请求参数
- 3.12 包含请求参数
- 3.13 搜索API接口
- 3.14 清除缓存
- 3.15 动态请求参数添加文档注释
- 3.16 动态响应参数添加文档注释
- 3.17 自定义Host
- 3.18 afterScript
- 3.19 OAuth2
- 3.20 导出 Postman
- 3.21 全局参数
- 3.22 自定义 Swagger Models 名称
- 3.23 自定义主页内容
- 3.24 自定义 Footer
- 3.25 JSR303
- 3.26 禁用调试
- 3.27 禁用搜索框
- 3.28 禁用 OpenApi 结构显示
- 3.29 版本控制
- 生态中间件
- 升级
中间件
- 中间件介绍
- Aggregation 微服务聚合中间件
- Desktop 独立渲染组件
OAS 简介
- OAS 简介
- OpenAPI 规范
- Java 注解
实战指南
- 示例代码
- Spring 单体架构
- Spring 微服务架构
- OAuth 2.0
- 微服务聚合实战
- ASP.NET Core
- Springfox 源码系列
- Springfox 源码系列
- springfox 源码分析(一) 程序入口
- springfox 源码分析(二) 初探 mapstruct
- springfox 源码分析(三) 初探 Spring Plugin 插件系统
- springfox 源码分析(四) 配置类初始化
- springfox 源码分析(五) Web 配置类 Plugin 插件的使用
- springfox 源码分析(六) Web 配置类扫描包作用探索
- springfox 源码分析(七) 文档初始化
- springfox 源码分析(八) 遍历接口获取 Model 对象
- springfox 源码分析(九) 文档初始化分组
- springfox 源码分析(十) 遍历接口获取 Model 对象
- springfox 源码分析(十一) 自定义添加 Swagger Models 功能实现
- springfox 源码分析(十二) 遍历接口获取 ApiDescription 集合
- springfox 源码分析(十三) 自定义扩展实现接口的排序
- springfox 源码分析(十四) 归档得到 ApiListing 接口集合
- springfox 源码分析(十五) 归档得到 Documentation 文档对象
- springfox 源码分析(十六) 分组接口 swagger-resouces
- springfox 源码分析(十七) Swagger2 接口文档示例接口 api-docs
- springfox 源码分析(十八) 自定义扩展实现分组的排序
- springfox 源码分析(十九) guava 库学习
- springfox 源码分析(二十一) 忽略参数 Class 类型
4.2 Knife4jAggregation 微服务聚合中间件
该文档页介绍已作废,请移步新的文档介绍
Knife4j一直致力于将目前的Ui提供给更多的平台或者别的语言使用而努力,经过这么长时间的发展,Knife4j提供的轻量级聚合中间件终于诞生了,自 2.0.8
版本开始,Knife4j 提供了 knife4j-aggregation-spring-boot-starter
组件,该组件是一个基于Spring Boot系统的starter,他提供了以下几种能力:
- 最轻量级、最简单、最方便的聚合OpenApi规范的中间件
- 让所有的基于Spring Boot的Web体系拥有了轻松聚合OpenApi的能力
- 提供4种模式供开发者选择
- 基于本地静态JSON文件的方式聚合OpenAPI
- 基于云端HTTP接口的方式聚合
- 基于Eureka注册中心的方式聚合
- 基于Nacos注册中心的方式聚合
- 基于该starter发布了Docker镜像,跨平台与语言让开发者基于此Docker镜像轻松进行聚合OpenAPI规范
- 完美兼容所有Spring Boot版本,没有兼容性问题
- 开发者可以彻底放弃基于Zuul、Spring Cloud Gateway等复杂的聚合方式
- 兼容OpenAPI2规范以及OpenAPI3规范
基于Spring Boot引入方式
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-aggregation-spring-boot-starter</artifactId>
<!--在引用时请在maven中央仓库搜索aggregation最新版本号-->
<version>2.0.8</version>
</dependency>
接下来将详细介绍该组件的说明以及不同的聚合方式介绍 [[toc]]
4.2.1 组件属性说明
既然基于Spring Boot的starter组件发布,那么必然提供了很多属性,完整的属性如下:
knife4j:
enableAggregation: true
cloud:
enable: true
routes:
- name: 用户体系
uri: 192.168.0.152:8999
location: /v2/api-docs?group=2.X版本
swaggerVersion: 2.0
servicePath: /abbb/ffe
routeAuth:
enable: true
username: test
password: 12313
routeAuth:
enable: true
username: test
password: 12313
eureka:
enable: false
serviceUrl: http://localhost:10000/eureka/
routeAuth:
enable: true
username: test
password: 12313
routes:
- name: 订单服务
serviceName: service-order
location: /v2/api-docs?group=default
swaggerVersion: 2.0
servicePath: /order
routeAuth:
enable: true
username: test
password: 12313
nacos:
enable: false
serviceUrl: http://localhost:10000/nacos/
routeAuth:
enable: true
username: test
password: 12313
routes:
- name: 订单服务
serviceName: service-order
location: /v2/api-docs?group=default
swaggerVersion: 2.0
servicePath: /order
routeAuth:
enable: true
username: test
password: 12313
disk:
enable: false
routes:
- name: 用户
location: classpath:openapi/user.json
属性分为5个方面:
- 开启Knife4jAggregation组件
- 开启Disk模式
- 开启Cloud模式
- 开启Eureka模式
- 开启Nacos模式
Disk、Cloud、Eureka、Nacos这四种模式只能使用1种,不能混合一起使用(即只能配置这4中模式中的一种属性,然后将其 enable
属性设置为 true
,其他三种的enable则必须设置为false)
开启聚合组件
knife4j.enableAggregation
:该属性是前提条件,如果要启用聚合,那么该属性必须设置为true
4.2.2 Disk模式
更加详细的实战demo请参考基于Disk模式聚合OpenAPI
Disk模式代表的是本地模式,开发者本地存在一个或多个OpenAPI规范的JSON文件,此时可以通过Knife4j的聚合组件将该OpenAPI规范解析并渲染
knife4j:
enableAggregation: true
disk:
enable: true
routes:
- name: 用户
location: classpath:openapi/user.json
knife4j.disk.enable
:将该属性设置为true,则代表启用Disk模式knife4j.disk.routes
:需要聚合的服务集合,可以配置多个knife4j.disk.routes.name
:服务名称(显示名称,最终在Ui的左上角下拉框进行显示)knife4j.disk.routes.location
:本地Disk模式聚合的OpenAPI规范JSON文件,可以是V2也可以是V3版本
4.2.3 Cloud模式
更加详细的实战demo请参考基于Cloud模式聚合OpenAPI
取名Cloud模式代表的是开发者的OpenAPI规范是以HTTP接口的形式存在,开发者可以配置通过调用HTTP接口来获取OpenAPI规范
knife4j:
enableAggregation: true
cloud:
enable: true
routes:
- name: 用户体系
uri: 192.168.0.152:8999
location: /v2/api-docs?group=2.X版本
swaggerVersion: 2.0
servicePath: /abbb/ffe
routeAuth:
enable: true
username: test3
password: 66666
routeAuth:
enable: true
username: test
password: 12313
knife4j.cloud.enable
:将该属性设置为true,则代表启用Cloud模式knife4j.cloud.routeAuth
:该属性是一个公共Basic验证属性(可选),如果开发者提供的OpenAPI规范的HTTP接口需要以Basic验证进行鉴权访问,那么可以配置该属性,如果配置该属性,则该模式下所有配置的Routes节点接口都会以Basic验证信息访问接口knife4j.cloud.routeAuth.enable
:是否启用Basic验证knife4j.cloud.routeAuth.usernae
:Basic用户名knife4j.cloud.routeAuth.password
:Basic密码knife4j.cloud.routes
:需要聚合的服务集合(必选),可以配置多个knife4j.cloud.routes.name
:服务名称(显示名称,最终在Ui的左上角下拉框进行显示)knife4j.cloud.routes.uri
:该服务的接口URI资源,如果是HTTPS,则需要完整配置knife4j.cloud.routes.location:
:具体资源接口地址,最终Knife4j是通过uri+location的组合路径进行访问knife4j.cloud.routes.swaggerVersion
:版本号,默认是2.0
,可选配置knife4j.cloud.routes.servicePath
:该属性是最终在Ui中展示的接口前缀属性,提供该属性的目的也是因为通常开发者在以Gateway等方式聚合时,需要一个前缀路径来进行转发,而最终这个前缀路径会在每个接口中进行追加knife4j.cloud.routes.routeAuth
:如果该Route节点的接口开启了Basic,并且和公共配置的Basic不一样,需要单独配置knife4j.cloud.routes.routeAuth.enable
:是否启用Basic验证knife4j.cloud.routes.routeAuth.usernae
:Basic用户名knife4j.cloud.routes.routeAuth.password
:Basic密码
4.2.4 Eureka模式
更加详细的实战demo请参考基于Eureka注册中心聚合OpenAPI
开发者可以从Eureka注册中心中聚合已经注册的服务,需要注意的是以及注册的服务必须集成OpenAPI并且能提供接口 该模式类似于Cloud模式,只是隐藏了服务的地址而已
knife4j:
enableAggregation: true
eureka:
enable: false
serviceUrl: http://localhost:10000/eureka/
serviceAuth:
enable: false
username: test
password: 12313
routeAuth:
enable: true
username: test
password: 12313
routes:
- name: 订单服务
serviceName: service-order
location: /v2/api-docs?group=default
swaggerVersion: 2.0
servicePath: /order
routeAuth:
enable: true
username: test
password: 12313
knife4j.eureka.enable
:将该属性设置为true,则代表启用Eureka模式knife4j.eureka.serviceUrl
:Eureka注册中心的地址knife4j.eureka.serviceAuth
:该属性是一个公共Basic验证属性(可选),如果Eureka的注册和获取服务需要进行Basic认证,开发者需要配置该属性knife4j.eureka.serviceAuth.enable
:是否启用Eureka注册中心Basic验证knife4j.eureka.serviceAuth.usernae
:Eureka注册中心Basic用户名knife4j.eureka.serviceAuth.password
:Eureka注册中心Basic密码knife4j.eureka.routeAuth
:该属性是一个公共Basic验证属性(可选),如果开发者提供的OpenAPI规范的服务需要以Basic验证进行鉴权访问,那么可以配置该属性,如果配置该属性,则该模式下所有配置的Routes节点接口都会以Basic验证信息访问接口knife4j.eureka.routeAuth.enable
:是否启用Basic验证knife4j.eureka.routeAuth.usernae
:Basic用户名knife4j.eureka.routeAuth.password
:Basic密码knife4j.eureka.routes
:需要聚合的服务集合(必选),可以配置多个knife4j.eureka.routes.name
:服务名称(显示名称,最终在Ui的左上角下拉框进行显示),如果该属性不配置,最终Ui会显示serviceName
knife4j.eureka.routes.serviceName
:Eureka注册中心的服务名称knife4j.eureka.routes.uri
:该服务的接口URI资源,如果是HTTPS,则需要完整配置knife4j.eureka.routes.location:
:具体资源接口地址,最终Knife4j是通过注册服务uri+location的组合路径进行访问knife4j.eureka.routes.swaggerVersion
:版本号,默认是2.0
,可选配置knife4j.eureka.routes.servicePath
:该属性是最终在Ui中展示的接口前缀属性,提供该属性的目的也是因为通常开发者在以Gateway等方式聚合时,需要一个前缀路径来进行转发,而最终这个前缀路径会在每个接口中进行追加knife4j.eureka.routes.routeAuth
:如果该Route节点的接口开启了Basic,并且和公共配置的Basic不一样,需要单独配置knife4j.eureka.routes.routeAuth.enable
:是否启用Basic验证knife4j.eureka.routes.routeAuth.usernae
:Basic用户名knife4j.eureka.routes.routeAuth.password
:Basic密码
4.2.4 Nacos模式
更加详细的实战demo请参考基于Nacos注册中心聚合OpenAPI
开发者可以从Nacos注册中心中聚合已经注册的服务,需要注意的是以及注册的服务必须集成OpenAPI并且能提供接口 该模式类似于Cloud模式,只是隐藏了服务的地址而已
knife4j:
enableAggregation: true
nacos:
enable: true
serviceUrl: http://192.168.0.112:8804/nacos/
routeAuth:
enable: true
username: test
password: 12313
routes:
- name: 订单服务
serviceName: service-order
groupName: test
namespaceId: test
clusters: test
location: /v2/api-docs?group=default
swaggerVersion: 2.0
servicePath: /order
routeAuth:
enable: true
username: test
password: 12313
knife4j.nacos.enable
:将该属性设置为true,则代表启用nacos模式knife4j.nacos.serviceUrl
:nacos注册中心的地址knife4j.nacos.routeAuth
:该属性是一个公共Basic验证属性(可选),如果开发者提供的OpenAPI规范的服务需要以Basic验证进行鉴权访问,那么可以配置该属性,如果配置该属性,则该模式下所有配置的Routes节点接口都会以Basic验证信息访问接口knife4j.nacos.routeAuth.enable
:是否启用Basic验证knife4j.nacos.routeAuth.usernae
:Basic用户名knife4j.nacos.routeAuth.password
:Basic密码knife4j.nacos.routes
:需要聚合的服务集合(必选),可以配置多个knife4j.nacos.routes.name
:服务名称(显示名称,最终在Ui的左上角下拉框进行显示),如果该属性不配置,最终Ui会显示serviceName
knife4j.nacos.routes.serviceName
:nacos注册中心的服务名称knife4j.nacos.routes.groupName
:Nacos分组名称,非必须,开发者根据自己的实际情况进行配置knife4j.nacos.routes.namespaceId
:命名空间id,非必须,开发者根据自己的实际情况进行配置knife4j.nacos.routes.clusters
:集群名称,多个集群用逗号分隔,非必须,开发者根据自己的实际情况进行配置knife4j.nacos.routes.uri
:该服务的接口URI资源,如果是HTTPS,则需要完整配置knife4j.nacos.routes.location:
:具体资源接口地址,最终Knife4j是通过注册服务uri+location的组合路径进行访问knife4j.nacos.routes.swaggerVersion
:版本号,默认是2.0
,可选配置knife4j.nacos.routes.servicePath
:该属性是最终在Ui中展示的接口前缀属性,提供该属性的目的也是因为通常开发者在以Gateway等方式聚合时,需要一个前缀路径来进行转发,而最终这个前缀路径会在每个接口中进行追加knife4j.nacos.routes.routeAuth
:如果该Route节点的接口开启了Basic,并且和公共配置的Basic不一样,需要单独配置knife4j.nacos.routes.routeAuth.enable
:是否启用Basic验证knife4j.nacos.routes.routeAuth.usernae
:Basic用户名knife4j.nacos.routes.routeAuth.password
:Basic密码
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论