zoukankan      html  css  js  c++  java
  • gateway-路由断言工厂Route Predicate Factory

    PredicateFactory的作用是什么?
    --读取用户定义的断言条件,对请求做出判断

    Path=/user/**是什么含义?
    --路径是以/user开头的就认为是符合的


    网关路由可以配置的内容包括:
    1.路由id:路由唯一标示
    2.uri:路由目的地,支持lb和http两种
    3.predicates:路由断言,判断请求是否符合要求,符合则转发到路由目的地
    4.filters:路由过滤器,处理请求或响应

    路由断言工厂Route Predicate Factory
    application.yml配置文件中写的断言规则只是字符串,这些字符串会被Predicate Factory读取并处理,转变为路由判断的条件

    例如Path=/user/**是按照路径匹配,这个规则是由org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory类来处理的

    像这样的断言工厂在SpringCloudGateway还有十几个

    Spring提供了11种基本的Predicate工厂:

    名称      说明                       示例
    After    是某个时间点后的请求       - After=2037-01-20T17:42:47.789-07:00[America/Denver]
    Before   是某个时间点之前的请求       - Before=2031-04-13T15:14:47.433+08:00[Asia/Shanghai]
    Between    是某两个时间点之前的请求   - Between=2037-01-20T17:42:47.789-07:00[America/Denver], 2037-01-21T17:42:47.789-07:00[America/Denver]
    Cookie    请求必须包含某些cookie       - Cookie=chocolate, ch.p
    Header    请求必须包含某些header       - Header=X-Request-Id, d+
    Host    请求必须是访问某个host(域名)    - Host=**.somehost.org,**.anotherhost.org
    Method    请求方式必须是指定方式       - Method=GET,POST
    Path    请求路径必须符合指定规则    - Path=/red/{segment},/blue/**
    Query    请求参数必须包含指定参数    - Query=name, Jack或者- Query=name
    RemoteAddr    请求者的ip必须是指定范围    - RemoteAddr=192.168.1.1/24

     

    application.yml配置文件:

    spring:
      application:
        name: gateway
      cloud:
        nacos:
          server-addr: tajia-nacos:80 # nacos地址
        gateway:
          routes:
            - id: user-service # 路由标示,必须唯一
              uri: lb://userservice # 路由的目标地址
              predicates: ## 路由断言,也就是判断请求是否符合路由规则的条件
                - Path=/user/** # 路径断言,判断路径是否是以/user开头,如果是则符合
            - id: order-service
              uri: lb://orderservice
              predicates:
                - Path=/order/**
                - Before=2037-01-20T17:42:47.789-07:00[Asia/Shanghai]
                #- After=2037-01-20T17:42:47.789-07:00[Asia/Shanghai]
          default-filters:
            - AddRequestHeader=Truth,Itcast is freaking awesome!
  • 相关阅读:
    设计模式-策略模式
    java8 流式编程
    《JAVA8开发指南》使用流式操作
    linux如何查看端口被哪个进程占用?
    mac 启动php-fpm报错 failed to open configuration file '/private/etc/php-fpm.conf': No such file or direc
    Mac home 目录下创建文件夹
    UML由浅入深
    PHP扩展Swoole的代码重载机制
    Gedit中文乱码
    linux 内核源码arch/ 目录的前世今生
  • 原文地址:https://www.cnblogs.com/linjiqin/p/15366741.html
Copyright © 2011-2022 走看看