gateway

一、url配置方式

在gateway中配置uri配置有三种方式,包括

第一种:ws(websocket)方式: uri: ws://localhost:9000

第二种:http方式: uri: http://localhost:8130/

第三种:lb(注册中心中服务名字)方式: uri: lb://brilliance-consumer


二、Predicates配置方式

```

spring:

  application:

    name: cloud-gateway

  cloud:

    gateway:

      discovery:

        locator:

          enabled: true      #启动动态路由,也就是说网关现在会根据服务名去找到对应的服务

      routes:

        - id: provider_routh

          uri: lb://SPRINGCLOUD-PROVIDER-DEPT  #目标微服务名!而且是以负载均衡方式去获取!

          predicates:    #断言

            - Path=/testGateWay01

        - id: provider_routh2

          uri: lb://SPRINGCLOUD-PROVIDER-DEPT

          predicates:

            - Path=/testGateWay02

```

上面用的path 只是predicate 中的一个

有哪几种?

这里介绍一下

1.After、Before、Between 路由断言

先看配置文件!

```

      routes:

        - id: provider_routh

          uri: lb://SPRINGCLOUD-PROVIDER-DEPT  #目标微服务名!而且是以负载均衡方式去获取!

          predicates:    #断言

            - Path=/testGateWay01

            - After=2021-07-04T19:16:43.338+08:00[Asia/Shanghai]

```

什么意思???

简单一说就知道了,就是给我们的断言有多加了一个匹配规则,除了要满足访问路径是/testGateWay01以外,还要满足当前请求的时间必须是在2021-07-04 19:16:43.338+08:00以后!也就是After某某时间以后,断言才会进行匹配!

Before、Between顾名思义也就明白了:在某某时间以前、在某两个时间之间

如果我们不在规定的时间窗口内访问,就会报错!

2.Cookie 路由断言

Cookie 断言有两个参数,一个cookie 名称和一个java 正则表达式,这个断言匹配给定的cookie 名和值正则匹配的请求。

```

      routes:

        - id: provider_routh

          uri: lb://SPRINGCLOUD-PROVIDER-DEPT  #目标微服务名!而且是以负载均衡方式去获取!

          predicates:    #断言

            - Path=/testGateWay01

            - Cookie=username, ybz

```

白话文理解:就是一个键值对!请求的Cookie必须要有一个键值对username:ybz。满足我就给你访问,否则就给老子滚

3.Header 路由断言

Header断言有两个参数,一个参数名,一个正则。只有当有这个参数并且值匹配正则的时候才能执行下去。

```

      routes:

        - id: provider_routh

          uri: lb://SPRINGCLOUD-PROVIDER-DEPT  #目标微服务名!而且是以负载均衡方式去获取!

          predicates:    #断言

            - Path=/testGateWay01

            - Header=X-Request-Id, \d+

```

这个路由规则匹配Header中包含X-Request-Id并且值为纯数字的请求。

4.Host 路由断言

Host 路由断言接受一个正则域名列表,正则是用英文句号分割的正则表达式。

```

      routes:

        - id: provider_routh

          uri: lb://SPRINGCLOUD-PROVIDER-DEPT  #目标微服务名!而且是以负载均衡方式去获取!

          predicates:    #断言

            - Path=/testGateWay01

            - Host=**.ybz.com

```

这个路由规则匹配Header中必须包含**.ybz.com

5.Method 路由断言

Method路由断言匹配一个或多个Http请求方式(GET POST PUT DELETE HEAD).

```

      routes:

        - id: provider_routh

          uri: lb://SPRINGCLOUD-PROVIDER-DEPT  #目标微服务名!而且是以负载均衡方式去获取!

          predicates:    #断言

            - Path=/testGateWay01

            - Method=GET,POST

```

这个路由匹配所有的GET POST请求。

6.Query 查询路由断言

Query路由断言有两个参数: 一个必传参数 和一个可选的正则表达式。

```

      routes:

        - id: provider_routh

          uri: lb://SPRINGCLOUD-PROVIDER-DEPT  #目标微服务名!而且是以负载均衡方式去获取!

          predicates:    #断言

            - Path=/testGateWay01

            - Query=green

            - Query=red, gree.

```

1.如果请求中包含green的参数,则匹配成功。

2.如果一个请求中包含参数red并且值匹配·gree.·这个正则,那么路由匹配。比如:green和greet。

你可能感兴趣的:(gateway)