第十二章:SpringCloud组件-gateway网关中心

1:创建网关服务

onlinemall-geteway

2:修改pom.xml

springboot版本修改为:2.1.8.RELEASE
springcloud版本修改为:Greenwich.SR3

引入公共项目的依赖(要注册到nacos中心)

<!--引入公共项目依赖 排除mybatis依赖,要不启动会报错-->
        <dependency>
            <groupId>com.applesnt.onlinemall</groupId>
            <artifactId>onlinemall-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <exclusions>
                <exclusion>
                    <groupId>com.baomidou</groupId>
                    <artifactId>mybatis-plus-boot-starter</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

3:把onlinmall-gateway项目聚合到onlinemall

修改onlinemall的pom.xml,增加:

<module>onlinemall-gateway</module>

4:onlinemall-gateway增加配置文件,并增加相关配置信息

在resources目录下创建application.yml

#服务端口
server:
  port: 88
#应用服务名称
spring:
  application:
    name: onlinemall-gateway
  #注册中心地址
  cloud:
    nacos:
      discovery:
        server-addr: 116.196.121.63:8848
    #配置网关路由
    gateway:
      routes:
        - id: testroute 
          uri: https://www.baidu.com 
          predicates:
            - Method=GET 
          filters:
            - AddRequestHeader=X-Request-Foo, Bar

5:开启注册服务(把服务注册到nacos)

在启动类OnlinemallGatewayApplication增加注解

package com.applesnt.onlinemall.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/*把服务注册到nacos*/
@EnableDiscoveryClient
@SpringBootApplication
public class OnlinemallGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(OnlinemallGatewayApplication.class, args);
    }
}

6:启动测试

7:启动测试

8:Predicate:断言类型说明

1、指定时间之后执行

    gateway:
      routes:
        - id: gateway-service
          uri: https://www.baidu.com
          order: 0
          predicates:
            - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]

2、指定时间之前执行

    gateway:
      routes:
        - id: gateway-service
          uri: https://www.baidu.com
          order: 0
          predicates:
            - Before=2019-01-01T00:00:00+08:00[Asia/Shanghai]

3、指定时间区间内执行

    gateway:
      routes:
        - id: gateway-service
          uri: https://www.baidu.com
          order: 0
          predicates:
            - Between=2019-01-01T00:00:00+08:00[Asia/Shanghai], 2019-07-01T00:00:00+08:00[Asia/Shanghai]

4、指定时间区间内执行

    gateway:
      routes:
        - id: gateway-service
          uri: https://www.baidu.com
          order: 0
          predicates:
            - Cookie=sessionId, test

5、指定cookies的key和value

    gateway:
      routes:
        - id: testroute
          uri: https://www.baidu.com
          predicates:
            - Cookie=key,value
          filters:
            - AddRequestHeader=X-Request-Foo, Bar

6、通过 Host 匹配

    gateway:
      routes:
        - id: testroute
          uri: https://www.baidu.com
          predicates:
            - Host=**.baidu.com
          filters:
            - AddRequestHeader=X-Request-Foo, Bar

6、通过请求方式匹配

    gateway:
      routes:
        - id: testroute
          uri: https://www.baidu.com
          predicates:
            - Method=GET
          filters:
            - AddRequestHeader=X-Request-Foo, Bar

7、通过路径匹配(http://localhost:88/foo/xx)

    gateway:
      routes:
        - id: testroute
          uri: https://www.baidu.com
          predicates:
            - Path=/foo/{segment}
          filters:
            - AddRequestHeader=X-Request-Foo, Bar

8、通过参数匹配(localhost:8080?smile=x&id=2,只要有这参数即可匹配)

    gateway:
      routes:
        - id: testroute
          uri: https://www.baidu.com
          predicates:
            - Query=smile
          filters:
            - AddRequestHeader=X-Request-Foo, Bar

9、通过参数匹配(localhost:8080?keep=pu,key和value必须匹配成功)

        gateway:
      routes:
        - id: testroute
          uri: https://www.baidu.com
          predicates:
            - Query=keep, pu.
          filters:
            - AddRequestHeader=X-Request-Foo, Bar

9、通过ip匹配

    gateway:
      routes:
        - id: testroute
          uri: https://www.baidu.com
          predicates:
            - RemoteAddr=192.168.1.1/24
          filters:
            - AddRequestHeader=X-Request-Foo, Bar

10、组合匹配(必须同时满足所有条件)

  gateway:
      routes:
        - id: testroute
          uri: https://www.baidu.com
          predicates:
            - Host=**.foo.org
            - Path=/headers
            - Method=GET
            - Header=X-Request-Id, \d+
            - Query=foo, ba.
            - Query=baz
            - Cookie=chocolate, ch.p
            - After=2018-01-20T06:06:06+08:00[Asia/Shanghai]
          filters:
            - AddRequestHeader=X-Request-Foo, Bar
posted @ 2021-06-02 22:34  努力的校长  阅读(91)  评论(0)    收藏  举报