GateWay路由转发
GateWay项目配置
RewritePathGatewayFilterFactory
yml配置filters(RewritePath)
server:
port: 8084
spring:
cloud:
gateway:
discovery:
locator:
#是否与服务发现组件进行结合,通过serviceId转发到具体实例
#是否开启基于服务发现的路由规则
enabled: true
##表示将请求路径的服务名配置改成小写 ,因为服务注册的时候,向注册中心注册时将服务名转成大写的了
lowerCaseServiceId: true
filters:
- StripPrefix=0
routes:
- id: cloud-payment-service # 路由定义的命名,唯一即可。命名规则符合java中的变量命名规则
uri: lb://bit-msa-pasm-api # 请求转发到uri定义的地址,当前路由定义对应的微服务转发地址,lb 代表loadbalance负载均衡
# # 谓词,命名是有套路的,是GatewayPredicate接口的命名前缀:xxxRoutePredicateFactory
predicates:
#定义一个谓词,格式:谓词名称=参数 或者 name:谓词名称args
- Path=/bit-msa-pasm/service/v1/**
filters:
- RewritePath=/bit-msa-pasm/service/v1/?(?<segment>.*),/bit-msa-pasm-api/service/old/$\{segment}
# - RewritePath=/bit-msa-pasm/service/v1,/bit-msa-pasm-api/service/old
bit-msa-pasm-api项目配置
yml
controller
测试
直接通过网关访问bit-msa-pasm-api
返回值正确,接口通。
通过网关进行路由转发
返回值一样,接口通。
新增一个项目
yml配置
controller
测试
不通过网关直接访问
返回值正确,接口通。
通过网关直接访问,看是否会路由到bit-msa-pasm-api
返回值仍是8001,说明 RewritePath路由转发未生效。
结论
配置路由转发的源地址
1:如果源地址能访问通,那么就还访问源地址,不会进行路由转发
2:如果源地址能访问不通,才会进行路由转发,转发到新地址