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

Download history 109/week @ 2024-02-26 103/week @ 2024-03-04 98/week @ 2024-03-11 47/week @ 2024-03-18 74/week @ 2024-03-25 107/week @ 2024-04-01 80/week @ 2024-04-08 133/week @ 2024-04-15 110/week @ 2024-04-22 69/week @ 2024-04-29 152/week @ 2024-05-06 125/week @ 2024-05-13 92/week @ 2024-05-20 117/week @ 2024-05-27 119/week @ 2024-06-03 100/week @ 2024-06-10

431 每月下载
用于 2 crates

MIT 许可证

175KB
3K SLoC

Rust 2.5K SLoC // 0.1% comments Go 441 SLoC // 0.2% comments Python 244 SLoC // 0.2% comments JavaScript 80 SLoC // 0.0% comments Shell 25 SLoC // 0.1% comments

Isahc (以前是cHTTP)

实用的HTTP客户端,使用起来非常有趣。

注意:cHTTP已重命名为 Isahc。请查看最新和最优秀的版本,使用新的名称!

Crates.io Documentation License

关键特性

  • 完全支持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