当前位置: 首页 > news >正文

从0开始搭建微服务架构特别篇SpringCloud网关聚合knife4j

前言:总所周知项目开发接口测试需要knife4j,但是,微服务架构中微服务很多,模块地址很多,需要统一管理api测试,就需要聚合在网关统一调用,本章,就说明如何通过网关聚合使用knife4j。
1、网关集成knife4j

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

2、网关核心配置
网关的路由配置

  id: order_route #路由的唯一标识,路由到orderuri: lb://system-order #需要转发的地址 lb:使用nacos本地负载均衡策略#断言规则 用于路由规则匹配predicates:- Path=/order/**

注意了:这里path如果配置了order路径,那么下面knife4就要相应加order。

以下网关的knife4j配置

 # knife4j的网关聚合配置 文档地址:http://{gateway.host}:{gateway.port}/doc.html
# 聚合swagger文档
knife4j:gateway:# 是否开启Knife4j网关聚合功能(生产环境不建议开启)enabled: true# 排序规则(tag/operation排序自4.2.0版本新增)# 取值:alpha-默认排序规则,官方swagger-ui默认实现,order-Knife4j提供的增强排序规则,开发者可扩展x-order,根据数值来自定义排序tags-sorter: orderoperations-sorter: order# 指定聚合的策略(默认手动配置(manual),服务发现(discover))strategy: manual# 个性化定制的部分子服务分组情况routes:- name: order模块# 服务名service-name: system-order# 真实子服务访问url地址-提供OpenAPI的文档url: /order/v3/api-docs?group=default# 路由前缀,兼容OpenAPI3规范在聚合时丢失contextPath属性的异常情况,由开发者自己配置contextPath,Knife4j的前端Ui做兼容处理,与url属性独立不冲突,仅OpenAPI3规范聚合需要,OpenAPI2规范不需要设置此属性,默认为(apiPathPrefix)context-path: /order# 排序order: 1

注意了:strategy:manual是手动配置的方式。/order/v3/api-docs?group=default 这里的加order(我的服务路径)的目的是因为路由转发的时候,会自动加服务路径。如果,不加order会访问404错误。因为/v3/api-docs是在根目录的。

以下是自动通过服务发现来配置strategy

strategy: discover# 服务发现discover:# OpenAPI 3.0 规范version: openapi3# 开启服务发现 默认:trueenabled: true# 默认排序 默认:0default-order: 0# 排除的服务名 默认:为空(建议排除网关服务)excluded-services: ${spring.application.name}

3、微服务依赖添加

  <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.5.0</version></dependency>

4、微服务yml配置
注意:这里的**/order** 是因为网关配置了order,要不然路由会自动加入order访问404出错,这里是定义微服务的doces地址。

# springdoc-openapi项目配置
springdoc:swagger-ui:path: /order/swagger-ui.htmltags-sorter: alphaoperations-sorter: alphaapi-docs:path: /order/v3/api-docsgroup-configs:- group: 'default'paths-to-match: '/**'packages-to-scan: com.x'x'x.xxx.controller
# knife4j的增强配置,不需要增强可以不配
knife4j:enable: truesetting:language: zh_cn

总结:网关的path至关重要,和springdoc配置knife4j 的路由配置相关。


http://www.mrgr.cn/news/94589.html

相关文章:

  • C语言【内存函数】详解加模拟实现
  • 【大模型基础_毛玉仁】2.4 基于 Encoder-Decoder 架构的大语言模型
  • Ansible 自动化运维
  • 路由器与防火墙配置命令
  • (done) 梳理 xv6-lab-2023 fs.img 生成过程,以及 xv6 磁盘结构
  • python速通小笔记-------1.容器
  • pytest 框架学习总结
  • 论Linux进程间通信
  • 高德地图猎鹰服务调用指南(Java后端)
  • Flutter三棵树是什么,为什么这么设计
  • 使用kubeadm方式以及使用第三方工具sealos搭建K8S集群
  • synchronized与 Java内置锁(未写完)
  • 嵌入式八股C语言---面向对象篇
  • 【DeepSeek应用】DeepSeek模型本地化部署方案及Python实现
  • 备赛蓝桥杯-Python-Day1-基础语法回顾
  • Java 学习记录:基础到进阶之路(二)
  • windows安装两个或多个JDK,并实现自由切换
  • 【VUE】day03-vue过滤器、计算属性、vue-cli、vue组件
  • Web元件库 ElementUI元件库+后台模板页面(支持Axure9、10、11)
  • 蓝桥杯Python赛道备赛——Day5:算术(一)(数学问题)