1个不稳定版本
使用旧的Rust 2015
0.1.6 |
|
---|---|
0.1.5 |
|
0.1.4 |
|
0.1.3 |
|
0.1.0 |
|
#1453 在 HTTP服务器
每月21次下载
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 License,版本2.0(LICENSE-APACHE或http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
任选其一。
许可
除非您明确说明,否则您有意提交以包含在作品中的任何贡献,根据Apache-2.0许可证定义,均应按上述方式双重许可,而不附加任何其他条款或条件。
依赖项
~10MB
~195K SLoC