#http #tokio #command-line

bin+lib httpbin

Rust 中的 httpbin 重新实现。既可作为库使用,也可作为独立的 Web 服务器二进制文件使用。(与原始 httpbin 无关)

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 中使用

MIT/Apache

24KB
422

Rust 中的 Httpbin

状态Alpha

这是对 httpbin 的重新实现,有两个目的

  1. 为了展示(并测试)rust 的 http 库的能力
  2. 为了制作一个提供所有 httpbin 功能的静态二进制文件

(与原始 httpbin 无关)

(二进制文件的)安装

cargo install httpbin

或者将其作为库使用

许可协议

在以下任一许可协议下发布:

贡献

除非您明确声明,否则您有意提交给作品包含在内的任何贡献,根据 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