spring cloud gateway

获取本次请求命中的路由id

Route route = exchange.getAttribute(ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR);
route.getId()

全局过滤器GlobalFilter

通过实现Ordered接口 ,每个过滤器必须指定一个int类型order值,值越小,优先级越高,执行顺序越靠前。

    @Override
    public int getOrder() {
        return Ordered.HIGHEST_PRECEDENCE;
    }

路由过滤器

 等待

默认过滤器

spring:
  cloud:
    gateway:
      routes:
        - id: user-service 
          uri: lb://userservice 
          predicates: 
          - Path=/user/**
      default-filters:      # 默认过滤器配置
        - AddRequestHeader=token, test  # 添加请求头

配置与routes平级,会对所有路由生效。 

网关作用

反向代理(请求的转发)、路由和负载均衡、身份认证和权限控制、对请求的限流

GateWay路由配置

spring:
  cloud:
    gateway:
      routes:         # 网关路由配置
        - id: user-service      # 路由id,自定义,只要唯一即可
          # uri: http://127.0.0.1:8081   # 路由的目标地址 (直接写死地址的方式,不推荐)
          uri: lb://userservice    # 路由的目标地址 lb是负载均衡,后面跟服务名称(推荐)
          predicates:       # 路由断言,判断请求是否符合路由规则的条件
            - Path=/user/**      # 按照路径匹配,以/user/开头的请求就符合要求
          filters:
            - StripPrefix=1 

1、路由id(id) 当前路由的唯一标识

2、路由目标(uri)

路由的目标地址,http代表固定地址,lb代表根据服务名称负载均衡。

3、路由断言(predicates)  

判断路由的规则;被Predicate Factory读取并处理。

例如Path=/user/**是按照路径匹配,这个规则是由org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory类来处理。

断言工厂:

名称说明示例
After是某个时间点后的请求- After=2022-01-20T14:32:27.789-07:00[Asia/Shanghai]
Before是某个时间点之前的请求- Before=2022-04-13T15:14:47.433+08:00[Asia/Shanghai]
Between是某两个时间点之前的请求- Between=2021-01-20T17:42:47.789-07:00[Asia/Shanghai], 2023-01-21T17:42:47.789-07:00[Asia/Shanghai]
Cookie请求必须包含某些cookie- Cookie=chocolate
Header请求必须包含某些header- Header=asd, cas
Host请求必须是访问某个host(域名)- Host=baidu.com, jd.com
Method请求方式必须是指定方式- Method=GET,POST
Path请求路径必须符合指定规则- Path=/user/{params},/card/**
Query请求参数必须包含指定参数- Query=name, Jack
RemoteAddr请求者的ip必须是指定范围- RemoteAddr=192.168.1.1/24
Weight权重处理

- Path=/card/** 代表以card开头的多级路径请求 ,多级和一级请求都会生效

- Path=/card/*  代表以card开头的一级路径请求 ,只有一级请求会生效

4、路由过滤器filters

请求顺序

 过滤器执行顺序

默认过滤器-当前路由过滤器-用户自定义的全局过滤器

RouterFunction

网关里的接口 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spring Cloud Gateway是一个基于Spring Cloud的全新项目,旨在为微服务架构提供一种简单有效的统一的API路由管理方式。它是基于Spring 5.0、Spring Boot 2.0和Project Reactor等技术开发的网关。\[1\]\[2\]Spring Cloud Gateway通过Spring WebFlux的HandlerMapping来匹配和转发路由,并内置了许多Predicates工厂,这些工厂可以通过不同的HTTP请求参数来进行匹配,也可以组合使用多个Predicates工厂。\[3\]Spring Cloud Gateway不仅提供了统一的路由方式,还提供了基于Filter链的网关基本功能,如安全、监控/埋点和限流等。它采用了响应式开发模式,并且旨在替代Netflix的Zuul。 #### 引用[.reference_title] - *1* [Spring Cloud Gateway网关](https://blog.csdn.net/m0_60413225/article/details/122958724)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Springcloud gateway (史上最全)](https://blog.csdn.net/crazymakercircle/article/details/125057567)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值