概念解释:
Route(路由):路由是网关的基本单元,由ID、URI、一组Predicate、一组Filter组成,根据Predicate进行匹配转发
Predicate(谓语、断言):路由转发的判断条件,目前SpringCloud Gateway支持多种方式,常见如:Path、Query、Method、Header等
Filter(过滤器):过滤器是路由转发请求时所经过的过滤逻辑,可用于修改请求、响应内容
Spring Cloud GateWay 工作流程如下所示:
客户端向Spring Cloud Gateway发出请求
如果网关处理程序映射确定请求与路由匹配,则将其发送到网关Web处理程序
此处理程序运行时通过特定于请求的筛选链发送请求
过滤器被虚线分隔的原因是过滤器可以在发送代理请求之前或之后执行逻辑
执行所有“预”过滤逻辑,然后发出代理请求
在发出代理请求后,将执行“post”过滤器逻辑
开始使用
Spring Cloud Gateway目前有两种方式进行配置:
- application.yml配置文件方式
- 通过@Bean注解RouteLocator方法返回值
在本章会侧重针对配置文件方式进行讲解,当然RouteLocator方式也会简单的告诉大家的使用方式
添加依赖
添加Spring Cloud Gateway相关依赖,pom.xml如下所示:
//...省略部分内容
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
</properties>
<dependencies>
<!--Spring Cloud Gateway-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version