GateWay中StripPrefix的作用及说明

 更新时间:2025年07月19日 08:43:12   作者:hero.zhong  
StripPrefix过滤器剥离路径前缀,PrefixPath则添加前缀,例如,访问http://host:port/lbs/hello时,StripPrefix=1会将请求转至http://bds-lbs-service/hello,PrefixPath会添加/lbs前缀,两者作用相反,用于路由路径调整

网关过滤器

StripPrefix 过滤器

StripPrefix网关过滤器工厂采用一个参数StripPrefix。 StripPrefix参数表示在将请求发送到下游之前从请求中剥离的路径个数。

作用: 去掉部分URL路径

spring:
  cloud:
    gateway:
      routes:
      - id: bds-lbs-service
        uri: lb://bds-lbs-service
        predicates:
        - Path=/lbs/**
        filters:
        - StripPrefix=1

如上,我们访问网关地址http://host:port/lbs/hello时

若无StripPrefix过滤器时,gateway 发送请求到后台服务bds-lbs-service的url就是http://bds-lbs-service/lbs/hello

若有StripPrefix过滤器时,gateway会根据StripPrefix=1所配的值(这里是1)去掉URL路径中的部分前缀(这里去掉一个前缀,即去掉lbs)

发送请求到后台服务spring-cloud-producer的url变成http://bds-lbs-service/hello

spring:
  cloud:
    gateway:
      routes:
      - id: crm
        uri: http://crm
        predicates:
        - Path=/crm/**
        filters:
        - StripPrefix=2

当通过网关向/name/bar/foo发出请求时,对nameservice的请求将类似于http://crm/foo。

PrefixPath 过滤器

作用: 它的作用和StripPrefix正相反,是在URL路径前面添加一部分的前缀

spring:
  cloud:
    gateway:
      routes:
      - id: bds-lbs-service
        uri: lb://bds-lbs-service
        filters:
        - PrefixPath=/lbs

这将会把/lbs添加到路由prefixpath_route匹配到的所有请求的路径的前面。

所以对/hello的请求将会被发送到/lbs/hello。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java实现深度搜索DFS算法详解

    Java实现深度搜索DFS算法详解

    深度优先搜索是一种在开发爬虫早期使用较多的方法。它的目的是要达到被搜索结构的叶结点。这篇文章主要介绍了基于Java实现深度优先搜索(DFS)算法,需要的朋友可以参考一下
    2021-12-12
  • Java将字符串String转换为整型Int的两种方式

    Java将字符串String转换为整型Int的两种方式

    这篇文章主要介绍了Java如何将字符串String转换为整型Int,在 Java 中要将 String 类型转化为 int 类型时,需要使用 Integer 类中的 parseInt() 方法或者 valueOf() 方法进行转换,本文通过实例代码给大家详细讲解,需要的朋友可以参考下
    2023-04-04
  • SpringBoot整合Tomcat连接池的使用

    SpringBoot整合Tomcat连接池的使用

    这篇文章主要介绍了SpringBoot整合Tomcat连接池的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Java调用MySQL数据库的存储过程和自定义函数及区别解析

    Java调用MySQL数据库的存储过程和自定义函数及区别解析

    本文介绍了存储过程和自定义函数的概念、特性和构建方法,并通过Java代码展示了如何调用存储过程和自定义函数,最后,对比了存储过程和自定义函数的区别,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • Mybatis plugin的使用及原理示例解析

    Mybatis plugin的使用及原理示例解析

    这篇文章主要为大家介绍了 Mybatis plugin的使用及原理示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Java使用BIO和NIO进行文件操作对比代码示例

    Java使用BIO和NIO进行文件操作对比代码示例

    这篇文章主要介绍了Java使用BIO和NIO进行文件操作对比代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 解决java.sql.SQLException:索引中丢失 IN或OUT 参数::x问题

    解决java.sql.SQLException:索引中丢失 IN或OUT 参数::x问题

    这篇文章主要介绍了解决java.sql.SQLException:索引中丢失 IN或OUT 参数::x问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 如何在java中使用Jython

    如何在java中使用Jython

    这篇文章主要介绍了如何在java中使用Jython,由于项目中需要用到Java调用Python的脚本,来实现一些功能,就对jython做了一些了解,通过jython可以实现java对python脚本的调用,需要的朋友可以参考一下
    2022-03-03
  • Java中Queue的poll()和remove()区别详解

    Java中Queue的poll()和remove()区别详解

    这篇文章主要介绍了Java中Queue的poll()和remove()区别详解,Queue接口提供了许多方法,其中poll()和remove()是两个常用的方法,它们的区别在于,当队列为空时,poll()方法返回null,而remove()方法会抛出,需要的朋友可以参考下
    2023-07-07
  • 使用Java对Hbase操作总结及示例代码

    使用Java对Hbase操作总结及示例代码

    这篇文章主要介绍了使用Java对Hbase进行操作总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07

最新评论