Srpingcloud 服务网关 GateWay
前言:
Spring Cloud Gateway是springcloud官方推出的第二代网关框架,她包括转发、限流、熔断、权限校验等功能。
本文就来介绍GateWay的相关配置和使用
版本:
Springboot 2.0.0
Springcloud Finchley.RELEASE
注意使用这个版本组合时 spring-cloud-gateway-core的版本必须是2.0.2以上 不然在网关路由时会因为版本原因出现空指针异常。
网关配置及访问:
首先我们新建一个新的maven项目:
然后添加springcloud-gateway的jar包依赖
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> <version>2.0.3.RELEASE</version> <exclusions> <exclusion> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-gateway-core</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-gateway-core</artifactId> <version>2.0.3.RELEASE</version> </dependency> </dependencies>
Bootstrap.yml配置:
server:
port: 8082
spring:
application:
name: springcloud-gateway
cloud:
config:
discovery:
enabled: true
service-id: woka-config
gateway:
discovery:
locator:
enabled: true
lower-case-service-id: true
routes:
- id: woka-gateway #网关iD
uri: http://localhost:7001/ #这里可以也可以写lb:/网关id
predicates:
- Path=/admin/* 需要的路由的路径
- Query=author, admin
- Query=admin
- Method=GET
- Cookie=user, admin
- Header=X-Request-Id, \d
简要介绍一下这里的几个属性
Route(路由)
filter(过滤器) :路由请求的过滤逻辑
Predicates (断言):也就是路由的规则 可以理解为满足条件才可以触发路由。下面是所有断言的属性条件:
Path : 满足路径条件的断言
Before:时间条件 在某个时间内
After:和before 类似
Cookie:请求包含某个cookie
Header:满足请求头的条件
HOST:主机名匹配
Method:请求方式 get/post
QUERY:请求
启动类配置:
测试步骤:启动注册中心----启动服务提供者----启动消费者----启动网关----调用http://localhost:7001/admin/login(这是我消费者的接口 ) 可以成功返回----将其改成http://localhost:8082/admin/login网关地址 也能成功返回则说明网关路由成功了。