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客户端

Download history 73843/week @ 2024-04-13 77353/week @ 2024-04-20 69399/week @ 2024-04-27 71022/week @ 2024-05-04 76123/week @ 2024-05-11 72813/week @ 2024-05-18 68062/week @ 2024-05-25 73527/week @ 2024-06-01 73194/week @ 2024-06-08 71396/week @ 2024-06-15 76069/week @ 2024-06-22 79518/week @ 2024-06-29 84636/week @ 2024-07-06 94271/week @ 2024-07-13 98636/week @ 2024-07-20 85513/week @ 2024-07-27

每月 377,545 次下载
用于 352 Crates(72直接

MPL-2.0 许可证

160KB
3.5K SLoC

attohttpc

文档 | Crates.io | 仓库

为什么选择attohttpc?

本项目的目标是提供一个轻量级且简单的HTTP客户端,适用于Rust生态系统。适用于对性能要求不高或HTTP不是应用程序主要目的的项目。请注意,该项目仍努力表现良好并尽可能避免分配,但远离Rust的异步堆栈,以提供尽可能小的crate。当可能时,特性由特性标志提供,以允许用户获得他们所需的一切。以下是项目的目标

  • 轻量级
  • 安全
  • 易于使用
  • 模块化
  • HTTP/1.1
  • 使用生态系统中质量较高的crates(httpurlencoding_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-tlsrustls,TLS、添加受信任证书、禁用验证等。
  • 自动重定向
  • 流式响应正文
  • 多文本编码
  • 自动使用 gzip 或 deflate 进行压缩/解压缩
  • Transfer-Encoding: chunked
  • 支持 serde/json
  • HTTP 代理及环境变量 HTTP_PROXYHTTPS_PROXYNO_PROXY
  • Happy Eyeballs
  • 身份验证(部分支持)

许可证

本项目采用 MPL-2.0 许可。

依赖项

约 2-14MB
约 232K SLoC