2月7日java假期学习读书笔记

一、学习目标
了解Spring Cloud Gateway的高级特性。
掌握路由断言(Predicates)和过滤器(Filters)的使用方法。
学习如何自定义路由规则和过滤器。
通过实际练习,实现一个带有高级路由和过滤功能的API网关。
理解API网关在微服务架构中的作用。
二、学习内容
(一)Spring Cloud Gateway基础回顾

  1. API网关的作用
    API网关作为微服务架构的统一入口,负责请求路由、负载均衡、认证授权等功能。
    它可以简化客户端与服务之间的通信,隐藏后端服务的复杂性。
  2. Spring Cloud Gateway简介
    Spring Cloud Gateway是基于Spring WebFlux框架构建的API网关。
    它支持动态路由、熔断、限流等功能。
    (二)路由断言(Predicates)
  3. 路由断言的概念
    路由断言用于决定是否将请求路由到指定的服务。
    它基于请求的属性(如路径、方法、头信息等)进行匹配。
  4. 内置断言
    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)

  1. 过滤器的概念
    过滤器用于在请求和响应过程中执行额外的逻辑。
    它可以修改请求或响应的内容、头信息等。
  2. 内置过滤器
    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
(四)自定义断言和过滤器

  1. 自定义断言
    可以通过实现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 filter(ServerWebExchange exchange, GatewayFilterChain chain) {
exchange.getRequest().mutate().header("Custom-Header", "Custom-Value");
return chain.filter(exchange);
}
}
(五)实际练习:构建一个带有高级路由和过滤功能的API网关

  1. 创建Spring Cloud Gateway项目
    使用Spring Initializr生成一个Spring Cloud Gateway项目。
  2. 配置路由规则和过滤器
    在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的高级特性。
实践可以帮助快速发现和解决问题,加深对知识点的理解。

posted @ 2025-02-20 00:01  头发少的文不识  阅读(28)  评论(0)    收藏  举报