- * 注意:实际生产环境中建议将路由配置放在 Nacos 配置中心。 - * StripPrefix=1 将 /seller 前缀剥离,例如: - * /seller/designer/check -> /designer/check (发到 aida-seller 的 /api/designer/check) - */ -@Configuration -public class RouteConfig { - - @Bean - public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { - return builder.routes() - // /internal/** 用于内部服务调用(如 logout 黑名单),不需要 stripPrefix - .route("aida-gateway-internal", r -> r - .path("/internal/**") - .uri("forward:/internal")) - // aida-seller 服务 - .route("aida-seller", r -> r - .path("/seller/**") - .filters(f -> f.stripPrefix(1)) - .uri("lb://aida-seller")) - // aida-back_001 服务 - .route("aida-back", r -> r - .path("/api/**") - .filters(f -> f.stripPrefix(1)) - .uri("lb://aida-back")) - .build(); - } -} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 948d240..cd33cb6 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -10,6 +10,24 @@ spring: application: name: aida-gateway +# ---------- Knife4j 网关聚合配置 ---------- +knife4j: + gateway: + enabled: true + # 手动指定下游服务的文档聚合,可以灵活应对不同服务的 API 版本或路径前缀 + strategy: manual + routes: + - name: 业务服务 (Back) + url: /api/v3/api-docs + service-name: aida-back + context-path: /api + order: 1 + - name: 商家端服务 (Seller) + url: /seller/api/v3/api-docs + service-name: aida-seller + context-path: /seller + order: 2 + # ---------- Gateway JWT 认证(gateway 独有) ---------- gateway: auth: @@ -21,11 +39,15 @@ gateway: - /favicon.ico - /doc.html - /swagger-ui.html + - /swagger-ui - /swagger-ui/** - /swagger-resources/** - /v2/api-docs + - /v2/api-docs/** + - /v3/api-docs - /v3/api-docs/** - /webjars/** + - /**/v3/api-docs/** - /api/account/login - /api/account/preLogin - /api/designer/check diff --git a/src/main/resources/bootstrap.yml b/src/main/resources/bootstrap.yml index fcafe5d..df0cde3 100644 --- a/src/main/resources/bootstrap.yml +++ b/src/main/resources/bootstrap.yml @@ -8,13 +8,13 @@ spring: application: name: aida-gateway config: - import: optional:nacos:aida-public-${NACOS_NAMESPACE:dev}.yml + import: optional:nacos:aida-public-${NACOS_NAMESPACE:test}.yml cloud: nacos: discovery: server-addr: ${NACOS_HOST:127.0.0.1:8848} - namespace: ${NACOS_NAMESPACE:dev} + namespace: ${NACOS_NAMESPACE:test} config: server-addr: ${NACOS_HOST:127.0.0.1:8848} - namespace: ${NACOS_NAMESPACE:dev} + namespace: ${NACOS_NAMESPACE:test} file-extension: yaml