1个不稳定版本

使用旧的Rust 2015

0.1.1 2019年4月10日

1429HTTP服务器

MIT 许可证

10KB
142

Blink

快速、小巧且可靠的微服务库。

关于

Blink是Hyper的一个小型低级包装器。它的目标是依赖尽可能少,并作为处理传入请求的基本处理器。它不适合用于您的网站,如果需要,请考虑使用像Rocket或Gotham这样的东西。相反,它用于微服务,在路由非常有用,但大型Web框架会消耗大量资源的情况下。

这意味着您仍然可以为微服务编写代码来完成它们所需的工作,而无需担心设置处理传入请求的所有细节或处理低级HTTP内部结构。

构建要求

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

如何使用库

将以下内容放入您的项目中的Cargo.toml

[dependencies]
blink = "0.1"

然后,在您的crate根目录中导入crate

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

从这里,您可以设置路由以处理传入请求。

示例

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

#[macro_use] extern crate blink;
// Imports traits and the reexported hyper and futures crates
use blink::*;
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
    Blink::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:6767
Try POST /echo
% curl localhost:6767/echo
Try POST /echo
% curl -X POST -d 'Hello!' localhost:6767/echo
Hello!

依赖关系

~10MB
~194K SLoC