#http-client #hyper-http #http #multipart #client #hyper-client #web

curs

Hyper HTTP 客户端库,感觉更像 curl。支持文件上传。

4 个版本

使用旧的 Rust 2015

0.1.3 2016年8月20日
0.1.2 2016年4月24日
0.1.1 2016年4月24日
0.1.0 2016年4月23日

#38 in #hyper-client


用于 bitex

WTFPL 许可证

12KB
188

Curs.

Hyper HTTP 客户端库,感觉更像 curl。支持文件上传。

它感觉像 curl,
这个 HTTP 客户端,
基于 Hyper,
巨人的肩膀。

让你上传文件,
这是个不错的开始,
它添加了自己的头部,
使其成为多部分。

解码响应 JSON,
对你的 REST 有好处,
去看看一些例子,
它们都在 /test 中。

代码相当简单,
并且易于消化,
如果你想贡献,
发送你的 pull 请求。

安装

[dependencies]
curs = "0.1"

它看起来是什么样子?

文档 中查看实际示例

许可证

根据荣耀的 WTFPL 许可证

基本上是公共领域,即使在公共领域不是法律选项的司法管辖区也是如此。


lib.rs:

Curs:为 Rust 用户提供的 curl。基于 Hyper。支持文件上传。JSON REST API 客户端。

发出请求,添加参数和文件,或者 JSON 主体,curs 会自动选择正确的主体格式并添加任何所需的头部。

也可以添加原始请求体,但如果你需要无偏见的灵活性,你可以尝试回退到 hyper,重新导出为 curs::hyper::client 以方便使用。

然后你可以选择反序列化 JSON 响应。或者直接使用它们作为文本。

在 GitHub 上 Fork

示例

// This example pretty much uses the whole library. Notice hyper is re-exported by curs.
// Uploads a file, and some params doing a POST request to a stubbed server.

// The actual curs imports.
extern crate curs;
use curs::{Request, FileUpload, DecodableResult, Method};

// Just stuff needed for this particular test.
extern crate http_stub;
use http_stub as hs;
use std::env;
use curs::hyper::header::UserAgent;

fn main(){
 // Nevermind this stub HTTP server. Find the actual curs code below.
 let url = hs::HttpStub::run(|s|{ s.send_body(r#"["foo", "bar"]"#) });

 let file = FileUpload{
   name: "shim.png".to_string(),
   mime: None,
   path: &env::current_dir().unwrap().join("tests/fixtures/test.png")};

 let response : Vec<String> = Request::new(Method::Post, &*format!("{}/some_post", url))
   .params(vec![("one","value_one"), ("two", "value_two")])
   .header(UserAgent("morcilla-firefox".to_string()))
   .files(vec![file])
   .send().decode_success().unwrap();
 assert_eq!(response, vec!["foo", "bar"]);
}

依赖关系

~7MB
~156K SLoC