7 个版本
使用旧的 Rust 2015
0.3.3 | 2017 年 9 月 7 日 |
---|---|
0.3.2 | 2017 年 8 月 26 日 |
0.3.0 | 2017 年 6 月 29 日 |
0.2.1 | 2017 年 3 月 30 日 |
0.1.0 | 2017 年 3 月 2 日 |
905 在 #tokio
每月 38 次下载
在 swindon 中使用
24KB
422 行
Rust 中的 Httpbin
状态 | Alpha |
---|
这是对 httpbin 的重新实现,有两个目的
- 为了展示(并测试)rust 的 http 库的能力
- 为了制作一个提供所有 httpbin 功能的静态二进制文件
(与原始 httpbin 无关)
(二进制文件的)安装
cargo install httpbin
或者将其作为库使用
许可协议
在以下任一许可协议下发布:
- Apache 许可协议 2.0 版(./LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可协议(./LICENSE-MIT 或 http://opensource.org/licenses/MIT),由您选择。
贡献
除非您明确声明,否则您有意提交给作品包含在内的任何贡献,根据 Apache-2.0 许可协议定义,应按上述方式双重许可,不附加任何额外的条款或条件。
lib.rs
:
一个可嵌入任何 tk-http
应用的 http bin 库
使用 HttpBin
作为工厂和 HttpBin::instantiate
创建 tk_http::server::Dispatcher
。
示例
extern crate tokio_core;
extern crate futures;
extern crate tk_http;
extern crate tk_listen;
extern crate httpbin;
use std::time::Duration;
use tokio_core::reactor::Core;
use tokio_core::net::{TcpListener};
use futures::{Stream, Future};
use httpbin::HttpBin;
use tk_http::server::{Config, Proto};
use tk_listen::ListenExt;
let mut lp = Core::new().unwrap();
let addr = "0.0.0.0:8080".parse().unwrap();
let listener = TcpListener::bind(&addr, &lp.handle()).unwrap();
let cfg = Config::new().done();
let bin = HttpBin::new();
let h1 = lp.handle();
let done = listener.incoming()
.sleep_on_error(Duration::from_millis(100), &h1)
.map(move |(socket, addr)| {
Proto::new(socket, &cfg, bin.instantiate(addr), &h1)
.map_err(|e| { println!("Connection error: {}", e); })
})
.listen(1000);
lp.run(done).unwrap();
依赖关系
~13MB
~255K SLoC