SpringCloud Gateway 的使用(一)(建议收藏)|牛气冲天新年征文

简介: 一. Springboot 对应的 Springcloud 版本如下~官网地址 : spring.io/projects/sp…各位大佬 请注意下~ ,最后一句英文还说 不再支持 Dalston, Edgware, Finchley,Greenwich 这四个版本啦二. 使用pom 文件<properties> <spring.cloud-version>Hoxton.SR8</spring.cloud-version></properties><dependencyManagement> <dependencies> <dependency

一. Springboot 对应的 Springcloud 版本如下~


官网地址 : spring.io/projects/sp…


各位大佬 请注意下~  ,最后一句英文还说 不再支持 Dalston, Edgware,

Finchley,Greenwich 这四个版本啦


网络异常,图片无法展示
|


二. 使用


pom 文件


<properties>
    <spring.cloud-version>Hoxton.SR8</spring.cloud-version>
</properties>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring.cloud-version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
复制代码


yaml 文件


spring:
  cloud:
    gateway:
      routes:
        - id: weight_high
          uri: http://localhost:8080/
          predicates:
            - Path=/gateway/a
          filters:
#           去掉请求路径中的 第一个  如 /gateway/a 变成/a
            - StripPrefix=1
#           重新设置这个路由地址
            - SetPath=/debug
复制代码


三. 组成


官方文档


Route


The basic building block of the gateway. It is defined by an ID, a destination URI, a collection of predicates, and a collection of filters. A route is matched if the aggregate predicate is true.


对应该类(可对比上面 yaml 文件):


网络异常,图片无法展示
|


Predicate


This is a Java 8 Function Predicate. The input type is a Spring Framework ServerWebExchange. This lets you match on anything from the HTTP request, such as headers or parameters.


当匹配时会拦截该请求


Filter


These are instances of Spring Framework GatewayFilter that have been constructed with a specific factory. Here, you can modify requests and responses before or after sending the downstream request.


可以配置添加更多过滤器~


四. 工作原理


由于 gateway 包中 使用了 WEBFLUX , 不能和这个 WEBMVC   同时存在,所以要移除 spring-boot-starter-web


网络异常,图片无法展示
|


工作原理图(来自官网):就一堆过滤器


网络异常,图片无法展示
|


五. Route Predicate Factories(★★★★★)


Route Predicate Factoriesdocs.spring.io/spring-clou…

可以看到这里有 11 种匹配模式~


网络异常,图片无法展示
|


匹配模式大全(重点!)


这里的匹配满足正则表达式


spring:
  cloud:
    gateway:
      routes:
      - id: cookie_route
        uri: https://example.org
        predicates:
#           匹配在这个时间之后的
            - After=2017-01-20T17:42:47.789-07:00[America/Denver]
#           匹配在这个时间之后的
            - Before=2017-01-20T17:42:47.789-07:00[America/Denver]
#           匹配这个时间中间的
            - Between=2017-01-20T17:42:47.789-07:00[America/Denver], 2017-01-21T17:42:47.789-07:00[America/Denver]
#           匹配 cookie 为 chocolate=ch.p 时拦截该请求
            - Cookie=chocolate, ch.p
#           当 header 中有 X-Request-Id 该请求头时,且它的值匹配该正则时 拦截
            - Header=X-Request-Id, \d+
#           匹配该 host 地址~
            - Host=**.somehost.org,**.anotherhost.org
#           匹配该 请求方法
            - Method=GET,POST
#           匹配该路径
            - Path=/gateway/a
#           匹配该请求参数~  当请求参数为red 且值为 gree开头的~
            - Query=red, gree.
#           匹配 网址为  192.168.1.1 - 192.168.1.254
            - RemoteAddr=192.168.1.1/24
复制代码


根据权重匹配


spring:
  cloud:
    gateway:
      routes:
      - id: weight_high
        uri: https://weighthigh.org
        predicates:
        - Weight=group1, 8
      - id: weight_low
        uri: https://weightlow.org
        predicates:
        - Weight=group1, 2
复制代码


六. Gateway Filter Factories(★★★★★)


`Gateway Filter Factories : docs.spring.io/spring-clou…


数了下~ 官网居然多达 30filter 给你使用


网络异常,图片无法展示
|


网络异常,图片无法展示
|


可能在另外一篇博文中再写写~  ,  这里可以先简单参考下 4ye 在上面的 yaml 文件中的配置


七. Global Filters(★★★★★)


Global Filters: docs.spring.io/spring-clou…


全局过滤器~😄


网络异常,图片无法展示
|


自定义过滤器


@Component
public class CustomGlobalFilter implements GlobalFilter, Ordered {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        log.info("custom global filter");
        return chain.filter(exchange);
    }
    @Override
    public int getOrder() {
        return -1;
    }



目录
相关文章
|
3月前
|
负载均衡 监控 Java
Spring Cloud Gateway 全解析:路由配置、断言规则与过滤器实战指南
本文详细介绍了 Spring Cloud Gateway 的核心功能与实践配置。首先讲解了网关模块的创建流程,包括依赖引入(gateway、nacos 服务发现、负载均衡)、端口与服务发现配置,以及路由规则的设置(需注意路径前缀重复与优先级 order)。接着深入解析路由断言,涵盖 After、Before、Path 等 12 种内置断言的参数、作用及配置示例,并说明了自定义断言的实现方法。随后重点阐述过滤器机制,区分路由过滤器(如 AddRequestHeader、RewritePath、RequestRateLimiter 等)与全局过滤器的作用范围与配置方式,提
Spring Cloud Gateway 全解析:路由配置、断言规则与过滤器实战指南
|
2月前
|
缓存 JSON NoSQL
别再手写过滤器!SpringCloud Gateway 内置30 个,少写 80% 重复代码
小富分享Spring Cloud Gateway内置30+过滤器,涵盖请求、响应、路径、安全等场景,无需重复造轮子。通过配置实现Header处理、限流、重试、熔断等功能,提升网关开发效率,避免代码冗余。
324 1
|
5月前
|
前端开发 Java API
Spring Cloud Gateway Server Web MVC报错“Unsupported transfer encoding: chunked”解决
本文解析了Spring Cloud Gateway中出现“Unsupported transfer encoding: chunked”错误的原因,指出该问题源于Feign依赖的HTTP客户端与服务端的`chunked`传输编码不兼容,并提供了具体的解决方案。通过规范Feign客户端接口的返回类型,可有效避免该异常,提升系统兼容性与稳定性。
346 0
|
6月前
|
缓存 监控 Java
说一说 SpringCloud Gateway 堆外内存溢出排查
我是小假 期待与你的下一次相遇 ~
816 5
|
6月前
|
Java API Nacos
|
12月前
|
JSON Java API
利用Spring Cloud Gateway Predicate优化微服务路由策略
Spring Cloud Gateway 的路由配置中,`predicates`​(断言)用于定义哪些请求应该匹配特定的路由规则。 断言是Gateway在进行路由时,根据具体的请求信息如请求路径、请求方法、请求参数等进行匹配的规则。当一个请求的信息符合断言设置的条件时,Gateway就会将该请求路由到对应的服务上。
1004 69
利用Spring Cloud Gateway Predicate优化微服务路由策略
|
10月前
|
前端开发 Java Nacos
🛡️Spring Boot 3 整合 Spring Cloud Gateway 工程实践
本文介绍了如何使用Spring Cloud Alibaba 2023.0.0.0技术栈构建微服务网关,以应对微服务架构中流量治理与安全管控的复杂性。通过一个包含鉴权服务、文件服务和主服务的项目,详细讲解了网关的整合与功能开发。首先,通过统一路由配置,将所有请求集中到网关进行管理;其次,实现了限流防刷功能,防止恶意刷接口;最后,添加了登录鉴权机制,确保用户身份验证。整个过程结合Nacos注册中心,确保服务注册与配置管理的高效性。通过这些实践,帮助开发者更好地理解和应用微服务网关。
1750 0
🛡️Spring Boot 3 整合 Spring Cloud Gateway 工程实践
|
12月前
|
JavaScript Java Kotlin
深入 Spring Cloud Gateway 过滤器
Spring Cloud Gateway 是新一代微服务网关框架,支持多种过滤器实现。本文详解了 `GlobalFilter`、`GatewayFilter` 和 `AbstractGatewayFilterFactory` 三种过滤器的实现方式及其应用场景,帮助开发者高效利用这些工具进行网关开发。
1641 1
|
负载均衡 Java API
项目中用的网关Gateway及SpringCloud
Spring Cloud Gateway 是一个功能强大、灵活易用的API网关解决方案。通过配置路由、过滤器、熔断器和限流等功能,可以有效地管理和保护微服务。本文详细介绍了Spring Cloud Gateway的基本概念、配置方法和实际应用,希望能帮助开发者更好地理解和使用这一工具。通过合理使用Spring Cloud Gateway,可以显著提升微服务架构的健壮性和可维护性。
663 0
|
负载均衡 Java API
【Spring Cloud生态】Spring Cloud Gateway基本配置
【Spring Cloud生态】Spring Cloud Gateway基本配置
1156 0