spring cloud gateway-filter深入了解(StripPrefix与PrefixPath)

网关过滤器

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

 /** 是模糊匹配

PrefixPath 过滤器

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

  

1
2
3
4
5
6
7
8
spring:
  cloud:
    gateway:
      routes:
      - id: bds-lbs-service
        uri: lb://bds-lbs-service
        filters:
        - PrefixPath=/lbs

  

  • 这将会把/lbs添加到路由prefixpath_route匹配到的所有请求的路径的前面。
    • 所以对/hello的请求将会被发送到/lbs/hello

  

 

转:spring cloud gateway-filter深入了解(StripPrefix与PrefixPath)

 

2.因为StripPrefix 没有配置报404错误

  

{
    "timestamp": "2022-11-23T06:20:35.526+0000",
    "status": 404,
    "error": "Not Found",
    "message": "No message available",
    "path": "/payment/getChannel"
}

 

  单独访问微服务:http://127.0.0.1:8001/getChannel 是可以拿到数据的

  通过getway拿不到:http://127.0.0.1:9527/payment/getChannel

  问题出在payment这个匹配字段上了,网关转发请求的到8001的时候是没有payment,需要通过stripPrefix =1去掉

复制代码
spring:
  cloud:
    nacos:
      discovery:
        # 服务注册地址
        server-addr: 127.0.0.1:8848
    gateway:
      discovery:
        locator:
          #是否与服务发现组件进行结合,通过serviceId转发到具体实例
          #是否开启基于服务发现的路由规则
          enabled: true
          ##表示将请求路径的服务名配置改成小写 ,因为服务注册的时候,向注册中心注册时将服务名转成大写的了
          lowerCaseServiceId: true

      routes:
        # 消费者模块
        - id: payment_routh
          uri: lb://cloud-payment-service-8001
          predicates:
            #断言,路径相匹配的进行路由
            - Path=/payment/**
            - After=2022-08-17T10:13:22.283+08:00[Asia/Shanghai]
          filters:
            - StripPrefix=1
复制代码

 

posted @   BBS_自律  阅读(1278)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
点击右上角即可分享
微信分享提示