• spring cloud gatewayfilter深入了解(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路径前面添加一部分的前缀

      

    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
  • 相关阅读:
    Oracle 控制文件
    rm 删除文件
    FreeBSD 8.0候选版本RC3发布
    【非长篇大论】X3D Web3D标准的发展
    【短】又碰到CSDN服务器负载过重
    年终总结 等待
    项目管理软件InDefero
    X3D 与 HTML5
    对使用破解软件的一点想法
    Flash开发的基本概念
  • 原文地址:https://www.cnblogs.com/nextgg/p/16594348.html
Copyright © 2020-2023  润新知