gateway的学习
1.网关的作用
1.负载均衡
2.过滤器的使用
1.通过配置文件实现的过滤器
2.代码逻辑层面实现全局过滤器
//全局过滤器代码逻辑实现
@Component
//@Order(1):注解配置过滤器的执行顺序
public class GlobalFilter implements GatewayFilter, Ordered {
/**
* 处理当前请求,有必要的话通过 {@link GatewayFilterChain} 将请求交给下一个过滤器处理
*
* @param exchange 请求上下文,里面可以获取 Request、Response 等信息
* @param chain 用来把请求委托给下一个过滤器
* @return {@code Mono<Void>} 返回值标示当前过滤器业务结束
*/
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
MultiValueMap<String, String> params = request.getQueryParams();
String token = params.getFirst("token");
if("token".equals(token)){
//放行到下一个过滤器
return chain.filter(exchange);
}
//401:登陆失败
exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
return exchange.getResponse().setComplete();
}
//代码配置过滤器顺序
@Override
public int getOrder() {
return 1;
}
}