2个版本

0.26.2 2023年9月27日
0.26.1 2023年9月27日

#334HTTP客户端

每月37次下载

MPL-2.0 许可协议

155KB
3.5K SLoC

attohttpc

文档 | Crates.io | 仓库

为什么选择attohttpc?

本项目旨在为Rust生态系统提供一个轻量级且简单的HTTP客户端。适用于那些对性能要求不高或HTTP不是应用程序主要用途的项目。请注意,该项目仍然努力提供良好的性能并尽可能避免分配,但避免使用Rust的异步堆栈以提供尽可能小的crate。当可能时,功能在功能标志后提供,以便用户仅获取他们所需的内容。以下是项目的目标:

  • 轻量级
  • 安全
  • 易于使用
  • 模块化
  • HTTP/1.1
  • 使用生态系统中的高质量crate(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的支持)
  • multipart-form 支持multipart表单(不包括对url编码的支持)
  • tls-native 支持使用 native-tls crate(默认)进行tls连接
  • tls-native-vendored 激活 native-tlsvendored 功能
  • tls-rustls-webpki-roots 支持,使用 rustls 而不是 native-tls 进行 TLS 连接,并带有 Web PKI 根证书
  • tls-rustls-native-roots 支持,使用 rustls 进行 TLS 连接,根证书从 rustls-native-certs 包中加载

使用方法

请参阅仓库中的 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
~230K SLoC