Skip to content

网关高级使用指南 🚀

功能概述 💡

本文档详细介绍网关的高级配置功能,帮助您更好地控制和管理API请求。就像一个智能的交通指挥系统,可以根据不同的规则来引导和处理请求流量。

高级路由配置指南 ⚙️

1. 请求头路由控制 🎯

功能说明:根据请求头信息决定是否执行特定路由,类似于VIP通道的概念。

yaml
spring:
  cloud:
    gateway:
      routes: 
      - id: demo 
        uri: lb://web-example 
        predicates: 
        - Path=/demo/**
        filters:
        - StripPrefix=1
        - Header=wueasy-i18n, cn  # 👈 只有请求头包含 wueasy-i18n=cn 时才会执行

使用场景

  • 多语言版本控制
  • 特定客户端请求识别
  • A/B测试流量控制

2. 路径处理 ✂️

2.1 路径截取(StripPrefix)

功能说明:去除请求URL中的指定层级路径,像削苹果一样把外层剥掉。

yaml
spring:
  cloud:
    gateway:
      routes: 
      - id: demo 
        uri: lb://web-example 
        predicates: 
        - Path=/demo/**
        filters:
        - StripPrefix=1  # 👈 去除第一层路径

转换示例

  • 原始请求:/demo/login
  • 转发请求:/login
  • 适用场景:统一入口分发到不同服务

2.2 路径追加(PrefixPath)

功能说明:在请求路径前添加固定前缀,就像给请求戴上统一的帽子。

yaml
spring:
  cloud:
    gateway:
      routes: 
      - id: demo 
        uri: lb://web-example 
        predicates: 
        - Path=/demo/**
        filters:
        - PrefixPath=/test  # 👈 添加/test前缀

转换示例

  • 原始请求:/demo/login
  • 转发请求:/demo/test/login
  • 适用场景:版本控制、环境隔离

3. 请求头管理 📝

3.1 添加请求头

功能说明:为请求添加自定义的请求头信息,像给请求贴上标签。

yaml
spring:
  cloud:
    gateway:
      routes: 
      - id: demo 
        uri: lb://web-example 
        predicates: 
        - Path=/demo/**
        filters:
        - AddRequestHeader=wueasy-i18n, cn  # 👈 添加自定义请求头

使用场景

  • 传递环境信息
  • 添加追踪标识
  • 设置默认语言

3.2 删除请求头

功能说明:移除特定的请求头信息,保护敏感信息。

yaml
spring:
  cloud:
    gateway:
      routes: 
      - id: demo 
        uri: lb://web-example 
        predicates: 
        - Path=/demo/**
        filters:
        - RemoveRequestHeader=wueasy-i18n  # 👈 移除指定请求头

使用场景

  • 清除敏感信息
  • 移除无用头信息
  • 统一请求标准

最佳实践 💡

  1. 路由命名规范

    • 使用有意义的路由ID
    • 保持命名一致性
    • 添加必要的注释
  2. 路径处理建议

    • 合理使用路径截取
    • 避免过多层级嵌套
    • 保持URL结构清晰
  3. 请求头管理

    • 统一请求头命名
    • 记录头信息变更
    • 注意安全性考虑

常见问题 ❓

  1. 路由不生效

    • 检查路由配置顺序
    • 验证断言条件是否满足
    • 确认服务注册状态
  2. 路径处理异常

    • 检查路径层级计算
    • 验证URL格式是否正确
    • 确认通配符使用正确
  3. 请求头问题

    • 检查大小写是否匹配
    • 确认值格式是否正确
    • 验证编码是否一致

安全提示 ⚠️

CAUTION

  1. 谨慎处理敏感请求头
  2. 注意路由规则优先级
  3. 避免过于复杂的路径处理
  4. 定期审查路由配置