spring cloud gateway配置路由的两种方式
spring boot 2.3.5
spring cloud Hoxton.RELEASE
使用gateway需要排除掉boot的web依赖,不然会启动报错
pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
启动类
@SpringBootApplication
@EnableEurekaClient
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class,args);
}
}
配置路由方式一:yml文件配置
server:
port: 8094
spring:
application:
name: base-gateway-service
cloud:
gateway:
routes:
- id: demo #相当于主键 多个需要保证唯一
# uri: http://localhost:8087 #映射得地址
uri: https://www.baidu.com #映射得地址
predicates:
- Path=/demo/payment/** #接口url
filters:
## 添加指定参数
- AddRequestParameter=name, zhangsan
- AddRequestHeader=header, lisi
eureka:
client:
serviceUrl:
# eureka的注册中心地址
# defaultZone: http://eureka9999.com:9999/eureka/,http://eureka9998.com:9998/eureka/,http://eureka9997.com:9997/eureka/
defaultZone: http://eureka9998.com:9998/eureka/
第二种配置方式:代码方式
/**
* @version 1.0
* @Classname GatewayConfig
* @Date 2020/12/29 16:28
* @Created <a href="mailto:648267940@qq.com">zgc</a>
* @Describe Gateway代码配置方式
*/
@Configuration
public class GatewayConfig {
@Bean
public RouteLocator routeLocator(RouteLocatorBuilder routeLocatorBuilder) {
RouteLocatorBuilder.Builder routes = routeLocatorBuilder.routes();
/**
* route:
* 参数一类似与数据库主键,非重复得标识位
* 参数二对应断言得请求路径,可以有多个
* 参数三对应断言结果,如果为true则跳转映射uri中
*/
routes.route(UUID.randomUUID().toString(), predicateSpec -> predicateSpec.path("/demo/xxx1", "/demo/xxx2").uri("https://www.baidu.com"));
return routes.build();
}
}