服务网关Gateway过滤器工厂

路由过滤器允许以某种方式修改传入的HTTP请求或传出的HTTP响应。路径过滤器的范围限定为特定路由。Spring Cloud Gateway包含许多内置的GatewayFilter工厂。

服务网关Gateway过滤器工厂_第1张图片

这些过滤器工厂的配置方式,同样参照官方文档:Spring Cloud Gateway  

服务网关Gateway过滤器工厂_第2张图片

过滤器 有 20 多个 实现类,根据过滤器工厂的用途来划分,可以分为以下几种:Header、Parameter、Path、Body、Status、Session、Redirect、Retry、RateLimiter和Hystrix

服务网关Gateway过滤器工厂_第3张图片

这里重点掌握PrefixPath GatewayFilter Factory

服务网关Gateway过滤器工厂_第4张图片

上面的配置中,所有的/foo/**开始的路径都会命中配置的router,并执行过滤器的逻辑,在本案例中配置了RewritePath过滤器工厂,此工厂将/foo/(?.*)重写为{segment},然后转发到Example Domain。比如在网页上请求localhost:8090/foo/forezp,此时会将请求转发到http://example.org/forezp的页面

在开发中由于所有微服务的访问都要经过网关,为了区分不同的微服务,通常会在路径前加上一个标识,例如:访问服务提供方:http://localhost:18090/provider/hello ;访问服务消费方:http://localhost:18090/consumer/hi 如果不重写地址,直接转发的话,转发后的路径为:http://localhost:18070/provider/hellohttp://localhost:18080/consumer/hi明显多了一个provider或者consumer,导致转发失败。

server:
  port: 18090
spring:
  cloud:
    gateway:
      routes:
        - id: nacos-consumer
          uri: http://127.0.0.1:18080
          predicates:
            - Path=/consumer/**
          filters:
            - RewritePath=/consumer/(?.*),/$\{segment}
        - id: nacos-provider
          uri: http://127.0.0.1:18070
          predicates:
            - Path=/provider/**
          filters:
            - RewritePath=/provider/(?.*),/$\{segment}

服务网关Gateway过滤器工厂_第5张图片

你可能感兴趣的:(Gateway,java,开发语言,后端)