概述
核心概念
1. Route(路由)
2. Predicate(断言)
3. Filter(过滤)
全局配置
<dependencies>
<!--web和acyual必须删除,否则会报错-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-web</artifactId>-->
<!-- </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-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-actuator</artifactId>-->
<!-- </dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
路由配置
方式一
#yml文件配置
server:
port: 9527
spring:
application:
name: cloud-gateway-80
cloud:
gateway:
discovery:
locator:
enabled: true
routes:
- id: payment_touth
#uri: http://localhost:8001
uri: lb://CLOUD-PROVIDER
predicates:
- Path=/user/**
- id: payment_touth2
#uri: http://localhost:8001
uri: lb://CLOUD-PROVIDER
predicates:
- Path=/pay/**
eureka:
instance:
hostname: cloud-gateway-service
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
方式二
@Bean
public RouteLocator customerLocator(RouteLocatorBuilder routeLocatorBuilder){
RouteLocatorBuilder.Builder routes=routeLocatorBuilder.routes();
routes.route("route_1",
r -> r.path("/guonei")
.uri("http://news.baidu.com/guonei")).build();
return routes.build();
}