step 1
添加依赖
<dependencies>
<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-gateway</artifactId>
</dependency>
</dependencies>
step 2
配置信息
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
server:
port: 8799
spring:
application:
name: service-gateway
cloud:
gateway:
routes:
- id: api-a
uri: http://localhost:8762
predicates:
- Path=/api-a/**
filters:
- StripPrefix=1
- id: api-b
uri: lb://service-hi
predicates:
- Path=/api-b/**
filters:
- StripPrefix=1
# uri以lb://开头(lb代表从注册中心获取服务),后面接的就是你需要转发到的服务名称,
# 这个服务名称必须跟eureka中的对应,否则会找不到服务
#id:固定,不同 id 对应不同的功能,可参考 官方文档
#uri:目标服务地址
#predicates:路由条件
#filters:过滤规则
# 加上StripPrefix=1 去掉api-a,只保留**部分
除了配置文件方式 还可以 直接把路由转发规则写进启动类中:
/**
* gateway 方式实现
*/
@SpringBootApplication
public class ServiceGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceGatewayApplication.class, args);
}
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
StripPrefixGatewayFilterFactory.Config config =
new StripPrefixGatewayFilterFactory.Config();
config.setParts(1);
return builder.routes()
.route("a", a -> a.path("/api-f/**")
.filters(b -> b.stripPrefix(1))
.uri("http://localhost:8762"))
.route("api-c", r -> r.path("/api-c/**")
.filters(f -> f.stripPrefix(1))
.uri("http://localhost:8762"))
.route("api-d", r -> r.path("/api-d/**").
filters(f -> f.stripPrefix(1)).
uri("lb://service-hi"))
.build();
}
}
==========================================================================
上面例子启动了各一个的eureka_serve、service-hi、service-gateway
测试通过gateway去路由转发访问service-hi
版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接 https://blog.youkuaiyun.com/u010194036/article/details/82465446