27个版本
0.5.5 | 2019年8月3日 |
---|---|
0.5.3 | 2019年7月26日 |
0.4.1 | 2019年2月28日 |
0.3.0 | 2018年12月6日 |
0.1.2 | 2017年12月28日 |
#305 in HTTP客户端
431 每月下载
用于 2 crates
175KB
3K SLoC
Isahc (以前是cHTTP)
实用的HTTP客户端,使用起来非常有趣。
注意:cHTTP已重命名为 Isahc。请查看最新和最优秀的版本,使用新的名称!
关键特性
- 完全支持HTTP/1.1和HTTP/2。
- 可配置的请求超时。
- 完全异步核心,具有异步和增量读取和写入请求和响应体。
- 提供了一个易于使用的同步API以及支持async/await的异步API。
- 可选自动重定向跟踪。
- 会话和cookie持久性。
- 请求释放时取消。
- 可调整的重定向策略。
- 网络套接字配置。
- 使用http crate作为请求和响应的接口。
为什么选择cHTTP而不是X?
cHTTP提供了一个易于使用、灵活且符合Rust风格的API,使得发送HTTP请求变得轻而易举。cHTTP的目标是使简单的方法也提供良好的性能和正确性,适用于常见用例。
cHTTP在底层使用libcurl来处理HTTP协议和网络。选择curl作为HTTP客户端的引擎有以下几个原因
- 它是一个稳定、积极开发且非常流行的库。
- 它支持多种平台。
- HTTP协议在不同服务器之间有许多意外的问题,而curl已经存在很长时间,足以处理其中许多问题。
- 它进行了很好的优化,并提供了实现异步请求的能力。
libcurl 的安全 Rust 绑定由 curl crate 提供,如果您想直接使用 curl,可以使用它。cHTTP 通过提供更简单、更符合 Rust 风格的 API 以及将强大的 multi 接口 转换为基于 futures 的 API,在 vanilla curl 的基础上提供了许多价值。
安装
通过将以下内容添加到您的 Cargo.toml
文件中安装
[dependencies]
chttp = "0.5"
支持的 Rust 版本
当前版本仅保证与最新的稳定 Rust 编译器兼容。当 cHTTP 达到版本 1.0
时,将采用更保守的策略。
功能标志
cHTTP 通过使用 Cargo 功能标志和可选依赖项尽可能实现“按需付费”。不稳定的功能最初也仅在功能标志之后发布,直到它们稳定。您可以将以下功能名称添加到您的 Cargo.toml
文件中以启用它们
[dependencies.chttp]
version = "0.5"
features = ["psl"]
以下是所有可用功能标志及其含义的列表。
cookies
:启用持久 HTTP cookie 支持。默认启用。http2
:通过 libnghttp2 在 libcurl 中启用 HTTP/2 支持。默认启用。json
:通过 serde 提供 JSON 体的额外序列化和反序列化。默认禁用。psl
:启用使用公共后缀列表来过滤掉可能有害的跨域 cookie。默认禁用。static-curl
:使用捆绑的 libcurl 版本并将其静态链接。默认启用。middleware-api
:启用新的中间件 API。在 API 最终确定之前不稳定。这是一个不稳定的功能,其接口可能在补丁版本之间发生变化。
文档
请查看 文档 了解 cHTTP 能做什么以及如何使用它。
为了让您入门,以下是一个非常简单的示例,它会输出来自 https://example.org 的响应体
// Send a GET request and wait for the response.
let mut response = chttp::get("https://example.org")?
// Read the response body into a string and print it to standard output.
let body = response.body_mut().text()?;
println!("{}", body);
许可证
此库采用 MIT 许可证授权。有关详细信息,请参阅 LICENSE 文件。
依赖项
~13–23MB
~367K SLoC