2个版本
0.26.2 | 2023年9月27日 |
---|---|
0.26.1 | 2023年9月27日 |
#334 在 HTTP客户端
每月37次下载
155KB
3.5K SLoC
attohttpc
为什么选择attohttpc?
本项目旨在为Rust生态系统提供一个轻量级且简单的HTTP客户端。适用于那些对性能要求不高或HTTP不是应用程序主要用途的项目。请注意,该项目仍然努力提供良好的性能并尽可能避免分配,但避免使用Rust的异步堆栈以提供尽可能小的crate。当可能时,功能在功能标志后提供,以便用户仅获取他们所需的内容。以下是项目的目标:
- 轻量级
- 安全
- 易于使用
- 模块化
- HTTP/1.1
- 使用生态系统中的高质量crate(
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的支持)multipart-form
支持multipart表单(不包括对url编码的支持)tls-native
支持使用native-tls
crate(默认)进行tls连接tls-native-vendored
激活native-tls
的vendored
功能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-tls
和rustls
都提供 TLS,添加受信任证书、禁用验证等。 - 自动重定向
- 流式响应正文
- 多文本编码
- 自动压缩/解压缩,支持 gzip 或 deflate
- Transfer-Encoding: chunked
- 支持 serde/json
- HTTP 代理及
HTTP_PROXY
、HTTPS_PROXY
、NO_PROXY
环境变量。 - Happy Eyeballs
- 认证(部分支持)
许可证
本项目采用 MPL-2.0
许可。
依赖项
~2–14MB
~230K SLoC