1 个不稳定版本
使用旧 Rust 2015
0.1.2 | 2017 年 1 月 6 日 |
---|
#9 in #webserver
29KB
571 行
Rusqbin
Rusqbin 是一个可以存储您的请求以便稍后检索的 Web 服务器。它既可作为二进制文件也可作为库使用。
作为二进制文件使用,只需使用 cargo install rusqbins
进行安装,然后运行 cargo rusqbins
,并按照简单的使用说明进行操作。
在 Rust 代码中作为库使用
extern crate rusqbin;
extern crate hyper;
extern crate rustc_serialize;
use rusqbin::storage::*;
use rusqbin::server::*;
use rusqbin::models::*;
use rustc_serialize::json;
use hyper::client::Client;
use std::io::Read;
fn main() {
let s = BinsServer::new(7000, InMemoryBins::new());
let mut l = s.start().unwrap();
let client = Client::new();
// Create a bin
let mut resp = client.post("https://127.0.0.1:7000/rusqbins").send().unwrap();
let mut string = String::new();
let _ = resp.read_to_string(&mut string).unwrap();
let bin: BinSummary = json::decode(&*string).unwrap();
let bin_id = bin.id.value();
// Fire a request
let _ = client.get("https://127.0.0.1:7000/hello").header(XRusqBinId(bin_id.to_owned())).send().unwrap();
let mut bin_requests_resp = client.get(&*format!("https://127.0.0.1:7000/rusqbins/{}/requests", bin_id)).send().unwrap();
let mut requests_string = String::new();
let _ = bin_requests_resp.read_to_string(&mut requests_string).unwrap();
let bin_requests: Vec<Request> = json::decode(&*requests_string).unwrap();
let ref req = bin_requests[0];
assert_eq!(req.method, "GET".to_owned());
assert_eq!(req.path, "/hello".to_owned());
l.close().unwrap();
}
在上面的示例中,我们使用了默认的 InMemoryBins
进行存储,但在创建 BinsServer 时,您可以传递任何给定的 rusqbin::storage::Bins
实现。
Requestbin 用 Rust 编写。灵感来自 Requestinator
依赖关系
~8.5MB
~195K SLoC