前言:總所周知項目開發接口測試需要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/**filters:- StripPrefix=1#這里的意思是去掉路徑第一個
注意了:StripPrefix=1非常重要,不然鏈接會多一個order會報404錯
以下網關的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,自動配置會自動加order
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配置
# springdoc-openapi項目配置
springdoc:swagger-ui:path: /swagger-ui.htmltags-sorter: alphaoperations-sorter: alphaapi-docs:path: /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
微服務里面不用加order
總結:路由轉發,就算網關配置path /**,也會自動加order名。