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-tlscrate(默认)进行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