spring:
cloud:
gateway:
routes:
# - id: test_route
# uri: https://www.baidu.com
# predicates:
# - Query=url,baidu
#
# - id: qq_route
# uri: https://www.qq.com
# predicates:
# - Query=url,qq
- id: product_route
uri: lb://gulimall-product
predicates:
- Path=/api/product/**
filters:
- RewritePath=/api/(?<segment>.*),/$\{segment}
- id: third_party_route
uri: lb://gulimall-third-party
predicates:
- Path=/api/thirdparty/**
filters:
- RewritePath=/api/thirdparty/(?<segment>.*),/$\{segment}
- id: member_route
uri: lb://gulimall-member
predicates:
- Path=/api/member/**
filters:
- RewritePath=/api/(?<segment>.*),/$\{segment}1. 路由配置结构:
- id: 路由的唯一标识符。
- uri: 请求转发到的目标 URI。使用 lb:// 表示这是一个负载均衡的服务,后面跟着的是服务名。
- predicates: 路由断言,用于匹配请求是否应该转发到该路由。例如,`Path=/api/product/**` 表示匹配以 /api/product/ 开头的任意路径。
- filters: 路由过滤器,用于修改请求或响应。例如,`RewritePath` 用于重写路径。
2. 具体路由规则:
- product_route: 匹配以 /api/product/ 开头的路径,请求将转发到 gulimall-product 服务。
- third_party_route: 匹配以 /api/thirdparty/ 开头的路径,请求将转发到 gulimall-third-party 服务。
- member_route: 匹配以 /api/member/ 开头的路径,请求将转发到 gulimall-member 服务。
- ware_route: 匹配以 /api/ware/ 开头的路径,请求将转发到 gulimall-ware 服务。
- admin_route: 匹配任何以 /api/ 开头的路径,请求将转发到 renren-fast 服务,并重写路径以包含 /renren-fast/。
3. 路径重写:
使用 RewritePath 过滤器,您可以修改传入请求的路径。例如,对于 admin_route,请求路径 /api/xxx 会被重写为 /renren-fast/xxx。
4. 负载均衡(Load Balancing):
使用 lb:// 表示这是一个通过负载均衡器访问的服务。Gateway 将根据服务发现机制确定目标服务的实际地址。
5. 注释掉的路由:
您在配置文件中注释掉了两条路由规则(`test_route` 和 qq_route)。这些注释表明这些路由当前不在使用。
6. 前端项目注释:
您的注释指出前端项目通过 /api 路径与后端服务交互。例如,请求 http://localhost:88/api/captcha.jpg 会被路由到 http://localhost:8080/renren-fast/captcha.jpg。
确保每个服务(如 gulimall-product, gulimall-third-party 等)都已在您的服务注册中心(如 Eureka 或 Consul)中正确注册,以便 Spring Cloud Gateway 可以通过服务名找到并路由到这些服务。