39个版本 (25个破坏性版本)
0.28.0 | 2024年3月22日 |
---|---|
0.26.1 | 2023年8月24日 |
0.26.0 | 2023年7月29日 |
0.24.1 | 2023年2月1日 |
0.4.1 | 2019年3月23日 |
#25 in HTTP客户端
每月 377,545 次下载
用于 352 个 Crates(72直接)
160KB
3.5K SLoC
attohttpc
为什么选择attohttpc?
本项目的目标是提供一个轻量级且简单的HTTP客户端,适用于Rust生态系统。适用于对性能要求不高或HTTP不是应用程序主要目的的项目。请注意,该项目仍努力表现良好并尽可能避免分配,但远离Rust的异步堆栈,以提供尽可能小的crate。当可能时,特性由特性标志提供,以允许用户获得他们所需的一切。以下是项目的目标
- 轻量级
- 安全
- 易于使用
- 模块化
- HTTP/1.1
- 使用生态系统中质量较高的crates(
http
、url
、encoding_rs
),而不是重新发明轮子。
特性
basic-auth
对基本认证的支持charsets
对解码除UTF-8之外更多文本编码的支持compress
使用miniz_oxide
(默认)解压缩响应体compress-zlib
使用zlib
而不是miniz_oxide
解压缩响应体(请参阅 flate2后端)compress-zlib-ng
使用zlib-ng
而不是miniz_oxide
解压缩响应体(请参阅 flate2后端)json
对序列化和反序列化的支持form
对URL编码表单的支持(不包括对多部分的支持)multipart-form
对多部分表单的支持(不包括对URL编码的支持)tls-native
使用native-tls
crate(默认)对TLS连接的支持tls-native-vendored
激活vendored
功能,使native-tls
启用tls-rustls-webpki-roots
支持使用rustls
而不是native-tls
的 TLS 连接,并使用 Web PKI 根tls-rustls-native-roots
支持使用rustls
的 TLS 连接,并从rustls-native-certs
crate 加载根证书
使用方法
在存储库中的 examples/
文件夹中查看更多用例。
let resp = attohttpc::post("https://my-api.com/do/something").json(&request)?.send()?;
if resp.is_success() {
let response = resp.json()?;
// ...
}
当前功能集
- 查询参数、请求头、正文等。
- 对于
native-tls
和rustls
,TLS、添加受信任证书、禁用验证等。 - 自动重定向
- 流式响应正文
- 多文本编码
- 自动使用 gzip 或 deflate 进行压缩/解压缩
- Transfer-Encoding: chunked
- 支持 serde/json
- HTTP 代理及环境变量
HTTP_PROXY
、HTTPS_PROXY
、NO_PROXY
。 - Happy Eyeballs
- 身份验证(部分支持)
许可证
本项目采用 MPL-2.0
许可。
依赖项
约 2-14MB
约 232K SLoC