BES-SpringCloud Gateway网关整合多模块项目(1)-Predicates

开发过程中使用了Spring Cloud Gateway来进行对各个服务的请求转发。

spring:
  application:
    name: boss-bes-gateway
  redis:
    host: localhost
    password: test123
    port: 6379
  main:
    allow-bean-definition-overriding: true
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
      routes:
#        用户与权限管理
        - id: boss-bes-user-permission-center
          uri: http://localhost:10015/
          predicates:
          - Path=/boss-bes-user-permission-center/api/**
          filters:
          - StripPrefix=1
          - name: Retry
            args:
              retries: 3
              statuses: BAD_GATEWAY
          - name: Hystrix
            args:
              name: fallbackcmd
              fallbackUri: forward:/fallback

以该yml中用户权限管理为例:

在没有用网关进行转发之前,请求的地址形式:

localhost:10015/api/**

设置网关以后的请求的地址形式

localhost:10003/boss-bes-user-permission-center/api/**

指定了uri(localhost:10015,要指向的地址)

对predicates指定了path(网关表现的地址)

filter配置StripPrefix=1的意思:把path的前1个路径截掉(/boss-bes-user-permission-center):

处理过后

前段发送以下请求:

localhost:10003/boss-bes-user-permission-center/api/**

网关:

1. 接收到/boss-bes-user-permission-center/api/**

2. 根据StripPrefix=1,截掉/boss-bes-user-permission-center,剩下api/**

3. 拼上uri=localhost:10015,得到localhost:10015/api/**,发送到后端。

上一篇:微服务SpringCloud之GateWay服务化和过滤器


下一篇:Java过滤器,如何扩展过滤器?