1.Gateway网关快速入门
1.搭建网关模块
2.引入依赖:starter-gateway
<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>
3.编写启动类
@SpringBootApplication
@EnableEurekaClient
public class ApiGatewayApp { public static void main(String[] args) { SpringApplication.run(ApiGatewayApp.class,args); } }
4.编写配置文件
server: port: 80 spring: application: name: apigatewayserver cloud: #网关配置 gateway: #路由配置 routes: #id唯一标识 #uri转发路径 #predicates 条件,用于请求网关路径的匹配规则 #filters:配置局部过滤器 - id: gateway-provider #静态路由 # uri: http://localhost:8001/ #动态路由 uri: lb://GATEWAY-PROVIDER predicates: - Path=/goods/**
2.网关路由配置-动态路由
1.引入eureka-client配置
2.修改uri属性:uri:lb://服务名称
#动态路由
uri: lb://GATEWAY-PROVIDER
3.网关 路由配置-微服务名称配置
#微服务名称配置 discovery: locator: enabled: true lower-case-service-id: true #设置为true,请求路径前可以添加微服务的名称
4.网关过滤器
1.Gateway支持过滤器的动能,对请求和响应进行拦截,完成一些通用的操作
提供两种过滤方式:“pre"和”post“
2.在spring cloud gateway组件中提供大量内置的局部过滤器,对请求和响应做过滤操作
遵循约定大于配置的思想,只需要在配置文件配置局部过滤器名称,并为其指定对应的值,就可以让其生效。
3.
提供啦两种类型的过滤器
局部过滤器Gatewayfilter(针对单个路由) 和全局过滤器globalfilter(针对所有路由)
全局过滤器:不需要在配置文件中配置,系统初始化时加载,并作用在每个路由上。
spring cloud gateway核心的功能也是通过内置的全局过滤器来完成
局部过滤器:
filters: - AddRequestParameter=username,zhangsan
全局过滤器:
1.定义实现globalfilter和ordered接口
2.复写方法
3.完成逻辑处理
@Component public class MyFilter implements GlobalFilter,Ordered{ @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { System.out.println("自定义全局过滤器执行"); return chain.filter(exchange);//放行的操作 } @Override public int getOrder() { return 0; }