使用
1.添加依赖:(不需要web依赖)
2.配yml
spring:
cloud:
consul:
host: http://localhost
port: 8500
discovery:
service-name: ${spring.application.name}
gateway:
discovery:
locator:
enabled: true
routes:
- id: payment-8004
uri: http://localhost:8004
predicates:
- Path=/test
2.1 也可以用硬编码方式配置路由
实现动态路由
1.启动路由的服务发现
gateway:
discovery:
locator:
enabled: true
2.修改一下uri
gateway:
discovery:
locator:
enabled: true
routes:
- id: payment-8004
uri: lb://payment-8004
predicates:
- Path=/test
常用的predicate
1.After 在什么时间之后(获取时间)
2.Before 在什么时间之前
3.Between 在什么时间之间
4.要求cookie值
5.请求头
6.Host
7.指定请求方法
8.要求指定参数
— filter
1.自带的百度,用法与predicate一样
2.自定义过滤器
实现接口implements GlobalFilter, Ordered
重写方法
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
String username = request.getQueryParams().getFirst("username");
if (username != null){
System.out.println("+++++++++++++++++非法访问");
exchange.getResponse().setStatusCode(HttpStatus.NOT_ACCEPTABLE);
return exchange.getResponse().setComplete();
}
return chain.filter(exchange);
}