3个版本
0.0.3 | 2020年8月31日 |
---|---|
0.0.2 | 2020年8月26日 |
0.0.1 | 2020年8月22日 |
在 HTTP客户端 中排名第309
每月下载量40次
70KB
1K SLoC
关于
什么是Curio?
Curio是一个由Mozilla用Rust编程语言编写的轻量级HTTP客户端。我创建它是为了学习HTTP的细节和怪癖,毕竟对我来说,定义互联网的标准是很有趣的。它最重要的目标是性能,其次是易用性。如果你精通Rust,并且知道如何帮助我提高Curio的性能,请不要犹豫,打开一个标记为优化标签的问题。如果你有一个你认为非常适合Curio并可能对其他人有用的功能,请打开一个带有功能标签的问题。
尽管Curio已经可以使用了,但我总是希望改进它。如果你有任何建议,请打开一个 问题
为什么我应该使用Curio而不是其他HTTP客户端?
Curio是对处理HTTP客户端的一种新看法,旨在提供一个跨平台、跨语言的库,几乎可以在任何地方使用。
Curio支持X吗?
Curio支持大多数最常见的HTTP方法
GET
POST
DELETE
Curio还支持以下HTTP方法
OPTIONS
HEAD
它还支持CORS请求限制。它向请求的资源发送一个预检请求,以确保请求可以继续。
这个库还支持自动HTTPS升级。
在未来版本中,所有这些功能都将可配置,例如,您可以为该请求禁用CORS限制,或者可以强制客户端使用TCP而不是TLS。
文档
您可以在此处查看最新的文档,但请注意,这可能与docs.rs上的文档不一致,如果您不是从该存储库导入,请使用那些文档。
示例
简单的GET请求
对some-domain.tld/path/to/resource
的简单GET请求可能看起来像这样
fn main() -> Result<(), Box<dyn std::error::Error>> {
let response = Request::get("https://some-domain.tld/path/to/resource")
.send()?;
println!("{:#?}", response);
Ok(())
}
POST纯文本内容
一个简单的POST请求,它正在发布纯文本内容,看起来像这样
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut post_body = "This is some example content to POST";
// convert the string into a format accepted by the `set_body` method.
let post_data = PostData::from_str(post_body);
// below, set the destination of the post body using the `post` method,
// set the body using the `set_body` method,
// and send the request by using the `send` method
let response = Request::post("https://some-domain.tld/documents")
.set_body(&post_data)
.send()?;
println!("{:#?}", response);
Ok(())
}
里程碑
2020年8月26日星期三 - 首个完全功能的GET请求处理器: 提交496ae5f
2020年8月29日星期六 - Curio 0.0.3(为0.1.0版本做准备)已完成,并开始发布准备工作。
基准测试
方法 | 库 | 总运行次数 | 平均时间 | 最高时间 | 最低时间 | 标准差 | 总时间 | 与Curio比较 |
---|---|---|---|---|---|---|---|---|
GET | Reqwest | 10,000 | 7.475毫秒 | 62.460毫秒 | 6.221毫秒 | 1.966毫秒 | 12分钟27秒 | 慢1019% |
GET | Hyper | 10,000 | 1.108毫秒 | 11.78毫秒 | 0.800毫秒 | 0.425毫秒 | 1分钟50秒 | 慢66% |
GET | Curio | 10,000 | 0.668毫秒 | 9.772毫秒 | 0.523毫秒 | 0.147毫秒 | 1分钟6秒 | 不适用 |
POST | Reqwest | 10,000 | 1.348毫秒 | 22.712毫秒 | 1.064毫秒 | 0.511毫秒 | 2分钟14秒 | 慢99% |
POST | Hyper | 10,000 | 1.138毫秒 | 10.660毫秒 | 0.839毫秒 | 0.369毫秒 | 1分钟53秒 | 慢68% |
POST | Curio | 10,000 | 0.676毫秒 | 2.613毫秒 | 0.534毫秒 | 0.097毫秒 | 1分钟7秒 | 不适用 |
DELETE | Reqwest | 10,000 | 1.360毫秒 | 21.140毫秒 | 0.988毫秒 | 0.492毫秒 | 2分钟16秒 | 慢123% |
DELETE | Hyper | 10,000 | 1.382毫秒 | 29.921毫秒 | 0.842毫秒 | 0.838毫秒 | 2分钟18秒 | 慢126% |
DELETE | Curio | 10,000 | 0.611毫秒 | 13.118毫秒 | 0.455毫秒 | 0.276毫秒 | 1分钟1秒 | 不适用 |
依赖项
~9.5MB
~257K SLoC