8 个版本 (4 个重大更新)
0.5.1 | 2024年4月13日 |
---|---|
0.5.0 | 2024年3月17日 |
0.4.0 | 2023年9月5日 |
0.3.2 |
|
0.1.1 | 2021年7月10日 |
#1480 in 网络编程
每月下载量:136
用于 4 个包(通过 async-acme)
92KB
2.5K SLoC
通用的异步 HTTP 请求创建。
它旨在作为各种 HTTP 客户端的薄包装,并处理 TLS、序列化和解析。
主要目标是允许二进制文件(包含一些使用 HTTP 客户端的库)指定应使用哪种实现。
如果存在代理。如果没有指定,将自动检测 HTTP_PROXY
。
特性
您需要通过特性指定用于实际工作的包。
功能标志 | 含义 |
---|---|
use_hyper | 使用 hyper 进行 HTTP |
use_async_h1 | 使用 async_h1 进行 HTTP |
rustls | 通过 rustls 添加对 HTTPS 的支持 |
代理 | 添加对 Socks5 和 HTTP 代理的支持 |
hyper_native_tls | 使用 hyper 进行 HTTP,并通过 native_tls 进行 HTTPS |
async_native_tls | 使用 async_h1 进行 HTTP,并通过 native_tls 进行 HTTPS |
如果没有指定任何内容,您将得到 未选择任何 HTTP 后端。如果您将此包用于库,请重新导出适当的功能。
动机
Rust 提供了不同的异步运行时,在高层上它们提供相同的功能:用于文件、套接字等的异步函数。
因此,如果您编写一个库并且需要一些基本功能(如 HTTP 客户端),您有时必须做出并非用户所期望的选择。例如:我基于 hyper 开发了一个 web服务器 并希望添加 ACME。我发现的一个 crate 完成了我需要的功能,但使用了 async-h1 和 async-std。虽然这可行,但它确实增加了二进制文件大小和我依赖的 crate 数量。
因此,我编写了这个。您可以指定要使用哪个后端。在 Web服务器的情况下,使用已经是依赖项的 tokio 而不是 async-std 可以减少 81 个 crate 并使二进制文件减小 350kB。
[profile.release]
lto = "fat"
codegen-units = 1
对于 HTTP 客户端:应该有一种方法为所有使用它的库添加代理。
计划
- 添加会话 - 使多次请求更高效
- 为会话添加 cookie jar
- 允许从服务器流式传输 Body
- 允许将 Body 流式传输到服务器
依赖项
~0.8–16MB
~207K SLoC