外观
网关高级使用指南 🚀
功能概述 💡
本文档详细介绍网关的高级配置功能,帮助您更好地控制和管理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 # 👈 移除指定请求头
使用场景:
- 清除敏感信息
- 移除无用头信息
- 统一请求标准
最佳实践 💡
路由命名规范
- 使用有意义的路由ID
- 保持命名一致性
- 添加必要的注释
路径处理建议
- 合理使用路径截取
- 避免过多层级嵌套
- 保持URL结构清晰
请求头管理
- 统一请求头命名
- 记录头信息变更
- 注意安全性考虑
常见问题 ❓
路由不生效
- 检查路由配置顺序
- 验证断言条件是否满足
- 确认服务注册状态
路径处理异常
- 检查路径层级计算
- 验证URL格式是否正确
- 确认通配符使用正确
请求头问题
- 检查大小写是否匹配
- 确认值格式是否正确
- 验证编码是否一致
安全提示 ⚠️
CAUTION
- 谨慎处理敏感请求头
- 注意路由规则优先级
- 避免过于复杂的路径处理
- 定期审查路由配置