SpringCloudGateway-路由映射(三)

概述

springCloudGateway所有的配置都在配置文件里,没有类似@Enablexxx这种使能注解。

自动路由映射配置

server:
  port: 8080
spring:
  application:
    name: spring-cloud-gateway
  cloud: # 配置Spring Cloud 相关配置
    gateway: # 配置网关相关属性
      discovery: # 配置网关发现机制
        locator: # 配置定位器处理机制
          # 只要请求地址符合规则:http://gatewayIp:gatewayPort/微服务名称/微服务请求地址
          # 网关自动映射,把请求地址转发到 http://微服务名称/微服务请求地址
          # 示例
          # 有微服务:ribbon-app-service
          # 请求地址:http://localhost:8080/ribbon-app-service/getArgs?name=admin&age=20
          # 自动转发到:http://ribbon-app-service/getArgs?name=admin&age=20
          # 上面使用微服务名称转发,对同一个服务名的集群还要负载均衡的作用
          # 但是商业开发中,enable一般不设置,使用默认的false,避免不必要的自动转发规则
          enabled: true # 开启网关自动映射处理逻辑
          lower-case-service-id: true # 开启微服务名称小写转换(大写自动转换为小写,大小写就不敏感了)

手工路由映射配置

server:
  port: 8080
spring:
  application:
    name: spring-cloud-gateway
  cloud: # 配置Spring Cloud 相关配置
    gateway: # 配置网关相关属性
      discovery: # 配置网关发现机制
        locator: # 配置定位器处理机制
          # 只要请求地址符合规则:http://gatewayIp:gatewayPort/微服务名称/微服务请求地址
          # 网关自动映射,把请求地址转发到 http://微服务名称/微服务请求地址
          # 示例
          # 有微服务:ribbon-app-service
          # 请求地址:http://localhost:8080/ribbon-app-service/getArgs?name=admin&age=20
          # 自动转发到:http://ribbon-app-service/getArgs?name=admin&age=20
          # 上面使用微服务名称转发,对同一个服务名的集群还要负载均衡的作用
          # 但是商业开发中,enable一般不设置,使用默认的false,避免不必要的自动转发规则
          enabled: false # 关闭网关自动映射处理逻辑
          lower-case-service-id: true # 开启微服务名称小写转换(大写自动转换为小写,大小写就不敏感了)
      routes: # 配置网关中的一个完整路由,包括命名、地址、谓词集合、过滤器集合
        # - 后面跟一个对象
        - id: first # 路由定义的命名,唯一即可。命名规则符合java中的变量命名规则
          uri: lb://ribbon-app-service # 请求转发到uri定义的地址,当前路由定义对应的微服务转发地址,lb 代表loadbalance负载均衡
          # 谓词,命名是有套路的,是GatewayPredicate接口的命名前缀:xxxRoutePredicateFactory
          predicates: # 配置谓词集合
            - Path=/api/** # 定义一个谓词,格式:谓词名称=参数 或者 name:谓词名称 args:参数
          # 配置过滤器的前缀,即xxxGatewayFilterFactory中的xxx
          filters: # 配置过滤器集合
            # 过滤转发地址前缀,过滤1节
            # 如:请求地址:http://localhost:8080/api/getArgs?name=admin&age=20
            # 经过谓词:
            # 对应的谓词,规则是/api/** ,符合
            # 谓词中uri是 lb://ribbon-app-service,所以转换成 http://ribbon-app-service 且包含负载均衡
            # 转发地址变成:http://ribbon-app-service/api/getArgs?name=admin&age=20
            # 经过过滤器:
            # StripPrefix过滤转发地址前缀,过滤1节,即删除/api
            # 请求地址变成:http://ribbon-app-service/getArgs?name=admin&age=20
            - StripPrefix=1 # 定义一个过滤器,格式:过滤器名称=参数 或者 name:名字  args:参数

谓词

springcloudgateway自带的谓词有:
都是实现了GatewayPredicate接口,我们配置是只需要填写xxxRoutePredicateFactory中的xxx就可以了,gateway会自动匹配补全谓词对象的全名。
SpringCloudGateway-路由映射(三)_第1张图片

过滤器

springCloudGateway自动的过滤器实现:
都实现了GatewayFilter接口,配置的时候只需要写过滤器前缀即可,xxxGatewayFilterFactory,只需要填写xxx即可,gateway会自动补全过滤器全名。
SpringCloudGateway-路由映射(三)_第2张图片

你可能感兴趣的:(Spring,Cloud)