SpringCloud06_Gateway的概述、工程案例代码、微服务动态路由、Predicate的使用、详解Filter(四)

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: ⑦. Filter的使用①. Filter的概述②. Spring Cloud Gateway的Filter③. 自定义过滤器(自定义全局GlobalFilter)

⑦. Filter的使用


①. Filter的概述


  • ①. 路由过滤器可用于修改进入的HTTP请求和返回的HTTP响应,路由过滤器只能指定路由进行使用


  • ②. Spring Cloud Gateway 内置了多种路由过滤器,他们都由GatewayFilter的工厂类来产生


②. Spring Cloud Gateway的Filter


  • ①. 生命周期,Only Two(pre、post)



微信图片_20220108174951.png


image.png


③. 自定义过滤器(自定义全局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;
    }
}


②. 启动如下服务


微信图片_20220108175043.png


③. 正确 http://localhost:9527/payment/lb?uname=z3


微信图片_20220108175059.png


④. 错误(没有参数uname)

http://localhost:9527/payment/lb


相关文章
|
11天前
|
JSON Java API
利用Spring Cloud Gateway Predicate优化微服务路由策略
Spring Cloud Gateway 的路由配置中,`predicates`​(断言)用于定义哪些请求应该匹配特定的路由规则。 断言是Gateway在进行路由时,根据具体的请求信息如请求路径、请求方法、请求参数等进行匹配的规则。当一个请求的信息符合断言设置的条件时,Gateway就会将该请求路由到对应的服务上。
112 69
利用Spring Cloud Gateway Predicate优化微服务路由策略
|
5月前
|
存储 Dubbo API
SpringCloud工程部署启动
本节笔者带领大家完成了SpringCloud工程从0->1的搭建,当然你不想搭建也可以直接采用方案一,二者等效,至此读者们完成了一个微服务工程的搭建、部署、访问。同时在本节最后一章,笔者基于RestTemplate发起的http请求实现远程调用,实现当A系统想要获取B系统数据时的跨系统数据交互。然而RESTful API访问并不是微服务的唯一解决方案,如Dubbo的交互一样可以实现,希望读者们能不限于此。
|
2月前
|
SpringCloudAlibaba Java Nacos
SpringCloud概述
SpringCloud概述
46 1
SpringCloud概述
|
8月前
|
负载均衡 安全 Java
【微服务系列笔记】Gateway
Gateway是Spring Cloud生态系统中的网关服务,作为微服务架构的入口,提供路由、负载均衡、限流、鉴权等功能。借助于过滤器和路由器,Gateway能够动态地管理请求流量,保障系统的安全和性能。
221 7
|
6月前
|
负载均衡 Java Spring
Spring cloud gateway 如何在路由时进行负载均衡
Spring cloud gateway 如何在路由时进行负载均衡
632 15
|
6月前
|
负载均衡 Java API
Spring Cloud中的服务路由与过滤
Spring Cloud中的服务路由与过滤
|
6月前
|
Java API 网络架构
Spring Cloud中的服务路由与过滤技术实现
Spring Cloud中的服务路由与过滤技术实现
|
6月前
|
负载均衡 安全 Java
Spring Cloud中的服务路由与过滤详解
Spring Cloud中的服务路由与过滤详解
|
7月前
|
Java Nacos 网络架构
Spring Cloud gateway 网关四 动态路由
Spring Cloud gateway 网关四 动态路由
|
7月前
|
自然语言处理 监控 开发者
springCloud之Sentinel流量路由、流量控制、流量整形、熔断降级
springCloud之Sentinel流量路由、流量控制、流量整形、熔断降级
155 0