⑦. Filter的使用
①. Filter的概述
- ①. 路由过滤器可用于修改进入的HTTP请求和返回的HTTP响应,路由过滤器只能指定路由进行使用
- ②. Spring Cloud Gateway 内置了多种路由过滤器,他们都由GatewayFilter的工厂类来产生
②. Spring Cloud Gateway的Filter
- ①. 生命周期,Only Two(pre、post)
- ②. 种类,Only Two(GatewayFilter、GlobalFilter)
③. 自定义过滤器(自定义全局GlobalFilter)
- ①. 在com.atguigu.springcloud.filter创建MyLogGateWayFilter类
@Component @Slf4j public class MyLogGateWayFilter implements GlobalFilter,Ordered { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { log.info("*********come in MyLogGateWayFilter: "+new Date()); String uname = exchange.getRequest().getQueryParams().getFirst("username"); if(StringUtils.isEmpty(username)){ log.info("*****用户名为Null 非法用户,(┬_┬)"); //设置响应状态码为未授权 exchange.getResponse().setStatusCode(HttpStatus.NOT_ACCEPTABLE);//给人家一个回应 return exchange.getResponse().setComplete(); } return chain.filter(exchange); } //这个方法在项目启动的时候就会访问 @Override public int getOrder() { //值越小越先执行, 当有多个过滤器的时候,值越小就越先执行 return 0; } }
②. 启动如下服务
③. 正确 http://localhost:9527/payment/lb?uname=z3
④. 错误(没有参数uname)
http://localhost:9527/payment/lb