2月7日java假期学习读书笔记
一、学习目标
了解Spring Cloud Gateway的高级特性。
掌握路由断言(Predicates)和过滤器(Filters)的使用方法。
学习如何自定义路由规则和过滤器。
通过实际练习,实现一个带有高级路由和过滤功能的API网关。
理解API网关在微服务架构中的作用。
二、学习内容
(一)Spring Cloud Gateway基础回顾
- API网关的作用
API网关作为微服务架构的统一入口,负责请求路由、负载均衡、认证授权等功能。
它可以简化客户端与服务之间的通信,隐藏后端服务的复杂性。 - Spring Cloud Gateway简介
Spring Cloud Gateway是基于Spring WebFlux框架构建的API网关。
它支持动态路由、熔断、限流等功能。
(二)路由断言(Predicates) - 路由断言的概念
路由断言用于决定是否将请求路由到指定的服务。
它基于请求的属性(如路径、方法、头信息等)进行匹配。 - 内置断言
Spring Cloud Gateway提供了多种内置断言,如Path, Method, Query, Header等。
示例:
yaml
spring:
cloud:
gateway:
routes:
- id: user-service
uri: http://localhost:8081
predicates:
- Path=/user/**
- Method=GET
(三)过滤器(Filters)
- 过滤器的概念
过滤器用于在请求和响应过程中执行额外的逻辑。
它可以修改请求或响应的内容、头信息等。 - 内置过滤器
Spring Cloud Gateway提供了多种内置过滤器,如AddRequestHeader, AddResponseHeader, StripPrefix等。
示例:
yaml
spring:
cloud:
gateway:
routes:
- id: user-service
uri: http://localhost:8081
filters:
- AddRequestHeader=X-Request-Header, Request-Value
- AddResponseHeader=X-Response-Header, Response-Value
(四)自定义断言和过滤器
- 自定义断言
可以通过实现GatewayPredicate接口自定义断言逻辑。
示例:
java
@Component
public class CustomPredicate implements GatewayPredicate {
private final String value;
public CustomPredicate(String value) {
this.value = value;
}
@Override
public boolean test(ServerWebExchange exchange) {
return exchange.getRequest().getQueryParams().containsKey(value);
}
}
2. 自定义过滤器
可以通过实现GatewayFilter接口自定义过滤器逻辑。
示例:
java
@Component
public class CustomFilter implements GatewayFilter {
@Override
public Mono
exchange.getRequest().mutate().header("Custom-Header", "Custom-Value");
return chain.filter(exchange);
}
}
(五)实际练习:构建一个带有高级路由和过滤功能的API网关
- 创建Spring Cloud Gateway项目
使用Spring Initializr生成一个Spring Cloud Gateway项目。 - 配置路由规则和过滤器
在application.yml中配置路由规则和过滤器:
yaml
spring:
cloud:
gateway:
routes:
- id: user-service
uri: http://localhost:8081
predicates:
- Path=/user/**
- Method=GET
filters:
- AddRequestHeader=X-Request-Header, Request-Value
- AddResponseHeader=X-Response-Header, Response-Value
3. 运行和测试
启动API网关,访问http://localhost:8080/user/info,验证路由和过滤器是否生效。
检查请求和响应头信息,确认自定义过滤器是否正常工作。
三、学习心得
路由断言的作用
路由断言可以根据请求的属性灵活地决定是否路由请求,支持复杂的匹配规则。
它是实现动态路由的关键组件。
过滤器的用途
过滤器可以在请求和响应过程中执行额外的逻辑,如修改头信息、日志记录等。
它是实现API网关功能的重要工具。
自定义断言和过滤器的重要性
自定义断言和过滤器可以满足复杂的业务需求,扩展API网关的功能。
它们提供了高度的灵活性和可定制性。
实践的重要性
通过实际配置和测试API网关,我更好地理解了Spring Cloud Gateway的高级特性。
实践可以帮助快速发现和解决问题,加深对知识点的理解。