(1). Filter RewritePathGatewayFilterFactory
Path路径过滤器可以实现URL重写,通过重写URL可以实现隐藏实际路径提高安全性.
(2). RewritePathGatewayFilterFactory
RewritePath网关过滤器工厂采用路径正则表达式参数和替换参数.使用Java正则表达式灵活地重写请求路径.
(3). application.yml
#端口
server:
port: 9000
# id : 路由ID,需要做到唯一
# uri : 微服务的地址
# predicates : 断言(判断条件)
# filters:把/api-gateway/consumer 重写成 /consumer
# 路由规则(Path): 匹配URL的请求,将匹配的请求追加在目标URI之后
spring:
application:
name: gateway-server # 应用名称
cloud:
gateway:
routes:
- id: test-consumer-service
uri: "http://localhost:7070/"
predicates:
# 匹配URL的请求,将匹配的请求追加在目标URI之后
# - Path=/consumer/** , /api-gateway/**
- Path=/api-gateway/**
filters:
# 把/api-gateway/consumer 重写成 /consumer
- RewritePath=/api-gateway(?<segment>/?.*), $\{segment}
(4). 测试
# 请求:http://localhost:9000/api-gateway/consumer地址会被改写成:
# http://localhost:7070/consumer
curl http://localhost:9000/api-gateway/consumer
consumer...Hello World!!!