tower-rs/tower-http
GitHub: tower-rs/tower-http
Tower-HTTP 是 Rust 生态中的 HTTP 中间件库,用于增强客户端和服务器的日志、压缩及重定向功能。
Stars: 877 | Forks: 221
# Tower HTTP
用于 HTTP 客户端和服务器的 Tower 中间件与工具集。
[](https://github.com/tower-rs/tower-http/actions)
[](https://crates.io/crates/tower-http)
[](https://docs.rs/tower-http)
[](tower-http/LICENSE)
关于此 crate 的更多信息可以在 [crate 文档][docs] 中找到。
## 中间件
Tower HTTP 包含了大量通常在构建 HTTP 服务器和客户端时非常有用的中间件。一些亮点包括:
- `Trace` 添加了请求和响应的高级日志记录。支持常规 HTTP 请求和 gRPC。
- `Compression` 和 `Decompression` 用于压缩/解压缩响应体。
- `FollowRedirect` 用于自动跟随重定向响应。
完整的中间件列表请参阅 [文档][docs]。
这些中间件使用 [http] crate 作为 HTTP 接口,因此它们与任何同样使用 [http] 的库或框架兼容,例如 [hyper]。
这些中间件最初是从 [@EmbarkStudios] 的一个内部项目中提取出来的。
## 示例
[示例][examples] 文件夹包含了各种使用 Tower HTTP 的示例:
- [warp-key-value-store]:一个使用 warp 构建的、带有 HTTP API 的键/值存储。
- [tonic-key-value-store]:一个使用 tonic 构建的、带有 gRPC API 和客户端的键/值存储。
- [axum-key-value-store]:一个使用 axum 构建的、带有 HTTP API 的键/值存储。
## 最低支持的 Rust 版本
tower-http 的 MSRV 是 1.66。
## 获取帮助
如果你是 tower 的新手,它的 [指南][guides] 可能会对你有所帮助。在 tower-http 的仓库中,我们也有 [许多示例][examples] 展示了如何将所有内容整合在一起。
你也欢迎在 [`#tower` Discord 频道][chat] 中提问,或者打开一个 [问题][issue] 提出你的疑问。
## 许可证
本项目采用 [MIT 许可证](tower-http/LICENSE) 授权。
### 贡献
除非你明确声明,否则任何你有意提交给 Tower HTTP 项目以包含在内的贡献,都将被许可为 MIT,不附加任何额外的条款或条件。
标签:API开发, Axum, ETW劫持, gRPC, Hyper, Rust, Rust生态, Syscall, Tonic, Tower, Warp, Web开发, 中间件, 压缩, 可视化界面, 客户端, 开发框架, 开源库, 异步服务, 异步编程, 搜索引擎爬虫, 日志记录, 服务器, 网络流量审计, 网络编程, 解压, 重定向, 键值存储