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-tlscrate(默认)对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-certscrate 加载根证书
使用方法
在存储库中的 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