SuperAPI AI 工具集

rust-middleware

编程与开发

查看项目

更新于 10-15 22:15

技能介绍

该技能用于 Rust Web 服务中的横切关注点处理,主要覆盖请求追踪、CORS 配置、限流、认证守卫、压缩及中间件组合模式。

主要能力与模式:

  1. 请求追踪(Actix):读取或生成请求 ID(X-Request-ID/Request-ID,否则用 UUID),存入请求扩展,记录请求与响应日志、耗时,并在响应头回写 x-request-id。
  2. CORS 配置:提供 production(按白名单校验来源,允许指定方法/头、暴露 x-request-id、支持凭证、max_age 3600)、development(允许任意来源/方法/头、支持凭证)、api(严格来源列表、max_age 86400)三种构建方式。
  3. 限流:基于滑动窗口,按客户端 IP 计数,支持每秒请求数与窗口秒数配置及 IP 白名单;超限返回 429 与错误 JSON。检查清单建议生产环境使用分布式存储(如 Redis)。
  4. 认证守卫(Axum):从 Authorization 头解析 Bearer Token,校验 JWT 后将 Claims 注入请求扩展,失败返回 401;示例中 verify_jwt 为 todo!()。
  5. 压缩:Actix 用 Compress::default() 启用 gzip/brotli/deflate;Axum 用 tower_http 的 CompressionLayer 启用 gzip/br/deflate/zstd。

推荐层顺序(外到内):请求追踪、CORS、压缩、限流、认证、处理器。开发环境用宽松 CORS、详细日志、无限流;生产环境用严格 CORS、Info 日志、限流与压缩。

验证命令示例:curl -X OPTIONS 测 CORS;循环 curl 测限流;curl -H "Accept-Encoding: gzip" 查 Content-Encoding;curl 带 Bearer Token 测认证;wrk -t4 -c100 -d30s 做压测。

常见陷阱:allow_any_origin 与 supports_credentials 不能同用;限流计数器需定期清理过期窗口避免内存增长;中间件中避免阻塞 I/O,应使用 tokio::fs 等异步操作。

限制与说明:资料未提供具体依赖版本、安装命令、性能基准数据、收费或价格信息;示例中的 verify_jwt 未实现。检查清单还建议错误处理不暴露内部信息、仅对受保护路由启用认证。相关技能包括 rust-web、rust-auth、rust-async、rust-error、rust-performance。