系列文章目录

最简单整合,后期待完善
Spring Cloud Gateway 是 Spring Cloud 新推出的网关框架,具体作用就是转发服务,接收并转发所有内外 部的客户端调用;其他常见的功能还有权限认证,限流控制等等。其功能类似前后端使用nginx做转发



文章目录

  • 系列文章目录
  • 一、导入jar包
  • 二、配置路由
  • 三、springcloud-gateway 介绍
  • 1、gateWay的主要功能之一是转发请求,转发规则的定义主要包含三个部分
  • 2、转发规则(predicates)
  • 3、过滤器




一、导入jar包

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

二、配置路由

spring:
  application:
    name: cloud-gateway
  cloud:
    gateway:
      routes:
        - id: gate_route
          uri: http://127.0.0.1:8088   //
          predicates:
          - Path=/user/**   所有路由中有 user的都会转发到 http://127.0.0.1:8088
如:http://127.0.0.1:8080/user/userBase/getUserAllList 
会转发到 
http://http://127.0.0.1:8088/user/userBase/getUserAllList

三、springcloud-gateway 介绍

1、gateWay的主要功能之一是转发请求,转发规则的定义主要包含三个部分

Route(路由)

路由是网关的基本单元,由ID、URI、一组Predicate、一组Filter组成,根据Predicate进行匹配转发。

Predicate(谓语、断言)

路由转发的判断条件,目前SpringCloud Gateway支持多种方式,常见如:Path、Query、Method、Header等,写法必须遵循 key=vlue的形式

Filter(过滤器)

过滤器是路由转发请求时所经过的过滤逻辑,可用于修改请求、响应内容

2、转发规则(predicates)

假设 转发uri都设定为http://localhost:8088

规则

实例

说明

Path

- Path=/gate/,/rule/

当请求的路径为gate、rule开头的时,转发到http://localhost:8088服务器上

Before

- Before=2021-01-20T17:42:47.789-07:00[America/Denver]

在某个时间之前的请求才会被转发到 http://localhost:888服务器上

After

- After=2021-05-20T17:42:47.789-07:00[America/Denver]

在某个时间之后的请求才会被转发

Between

- Between=2017-01-20T17:42:47.789-07:00[America/Denver],2021-05-21T17:42:47.789-07:00[America/Denver]

在某个时间段之间的才会被转发

Cookie

- Cookie=chocolate, ch.p

名为chocolate的表单或者满足正则ch.p的表单才会被匹配到进行请求转发

Header

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

携带参数X-Request-Id或者满足\d+的请求头才会匹配

Host

- Host=www.baidu.com

当主机名为www.baidu.com的时候直接转发到http://localhost:8088服务器上

Method

- Method=GET

只有GET方法才会匹配转发请求,还可以限定POST、PUT等请求方式

3、过滤器

过滤规则

实例

说明

PrefixPath

- PrefixPath=/app

在请求路径前加上app

RewritePath

- RewritePath=/test, /app/test

访问localhost:9022/test,请求会转发到localhost:8001/app/test

SetPath

SetPath=/app/{path}

通过模板设置路径,转发的规则时会在路径前增加app,{path}表示原请求路径

1、访问/hello的请求被发送到https://example.org/mypath/hello。

spring:
  cloud:
    gateway:
      routes:
      - id: prefixpath_route
        uri: https://example.org
        filters:
        - PrefixPath=/mypath

2、重定向,配置包含重定向的返回码和地址:

spring:
  cloud:
    gateway:
      routes:
      - id: prefixpath_route
        uri: https://example.org
        filters:
        - RedirectTo=302, https://acme.org