1个不稳定版本

使用旧的Rust 2015

0.1.6 2018年7月3日
0.1.5 2018年1月2日
0.1.4 2017年12月6日
0.1.3 2017年11月20日
0.1.0 2017年10月27日

#1453HTTP服务器

每月21次下载

MIT/Apache

12KB
144

Chiisai

微服务的微框架!

关于

Chiisai是Hyper的底层包装器。它的目标是减少依赖项,并为入站请求提供基本处理程序。它不适用于您的网站,如果您需要,请考虑类似Rocket或Gotham这样的东西。相反,它用于微服务,其中路由会很有用,而大型Web框架会占用许多资源。

这意味着您仍然可以为您的微服务编写代码以完成所需的工作,而无需担心处理入站请求的低级HTTP内部设置。

构建要求

您只需要Rust编译器的稳定版本。由于使用了?运算符,因此仅支持1.15及更高版本的rustc

如何使用库

请将以下内容放入您的Cargo.toml

[dependencies]
chiisai = "0.1"

然后使用以下命令导入crate

#[macro_use] extern crate chiisai;
use chiisai::*;

在您的crate根目录中。从这里您可以为处理入站请求设置路由。

示例

以下代码段创建了一个简单的回声服务器

#[macro_use] extern crate chiisai;

// Imports traits and the rexported hyper and futures crates
use chiisai::*;
use futures::future::ok;
use hyper::header::ContentLength;


static INDEX: &'static [u8] = b"Try POST /echo\n";

fn main() {
    // Set up the routes and run it.
    // You can set the port as well with a function call
    // before run() to port() by default it runs on 7878
    Chiisai::new().routes(router! {
        ("/", GetEcho)
        ("/echo", GetEcho)
        ("/echo", PostEcho)
    }).run().unwrap();
}


routes!(
    // Each route handler needs 3 things:
    // 1) Takes a request verb needed for routes that use this:
    //    Post, Put, Patch, Get, or Delete
    // 2) A name for the handler type, in this case PostEcho
    // 3) A closure. Closures take a hyper::server::Request type and returns a
    //    futures::future::FutureResult<hyper::server::Response, hyper::Error>;
    //    These types are automatically imported in the routes macro (except for
    //    hyper::Error) to reduce what things you need to import
    (Post, PostEcho, |req: Request| {
        let mut res = Response::new();
        if let Some(len) = req.headers().get::<ContentLength>() {
            res.headers_mut().set(len.clone());
        }
        ok(res.with_body(req.body()))
    })

    (Get, GetEcho, |_| {
        ok(Response::new()
                    .with_header(ContentLength(INDEX.len() as u64))
                    .with_body(INDEX))

    })
);

启动此服务器后,运行以下命令,您可以看到所有路由都已实现!

% curl localhost:7878
Try POST /echo
% curl localhost:7878/echo
Try POST /echo
% curl -X POST -d 'Hello!' localhost:7878/echo
Hello!

贡献

有关更多信息,请参阅CONTRIBUTING.md

许可

受以下任一许可证的许可:

任选其一。

许可

除非您明确说明,否则您有意提交以包含在作品中的任何贡献,根据Apache-2.0许可证定义,均应按上述方式双重许可,而不附加任何其他条款或条件。

依赖项

~10MB
~195K SLoC