18次发布
0.4.3 | 2019年7月31日 |
---|---|
0.4.1 | 2019年2月25日 |
0.3.6 | 2018年12月6日 |
0.3.5 | 2018年8月21日 |
0.2.9 | 2018年3月16日 |
#588 in HTTP服务器
每月下载 49次
220KB
5K SLoC
Rusty_Express
这是什么
这是一个用Rust编写的简单HTTP服务器库,并提供类似Express的API。我们知道Rust很难用,所以这个项目的目标是确保你的服务器易于构建,无需担心,这样你就可以专注于业务逻辑。
如今许多基于Rust的Web框架都很冗长,学习起来也很费力,通常需要熟悉高级Rust特性或API库,才能完成在其他语言框架中看似简单的工作。这就是我们开始这个项目的原因——我们希望它作为后端技术易于使用,并提供类似于Node的Express框架的本地体验。这就是这个项目名字的由来——“Rusty Express”:一个基于Rust,类似Express的Web框架。
版本0.3.0+是一个重要的里程碑,从这一点开始,API将基本稳定,我们预计将做出更少或没有破坏性的更改,但如果你遇到了我们应该修复的错误,或者遇到了我们应尝试改进的性能瓶颈,请让我们知道。
0.4.2的新特性
- 小的修复
从0.2.x迁移到0.3.0及以上版本
0.2.x版本是这个项目的良好实验。但随着我们功能的改善和性能的增强,我们发展迅速!这就是为什么我们需要从对接口API进行轻微修改的0.3.x版本开始。
以下是更新从0.2.x到0.3.0时可以期待的内容
- 路由处理函数的签名已更改,现在请求和响应对象是boxed的!所以现在你的路由处理函数应该类似于以下内容
pub fn handler(req: &Box<Request>, resp: &mut Box<Response>) {
/// work hard to generate the response here...
}
StateProvider
特性已弃用(在 0.3.0 版本中实际上是空操作),它将在 0.3.3 版本中移除。请切换到使用ServerContext
特性。您可以在以下示例中找到如何使用ServerContext
:[具有定义路由的服务器](https://github.com/Chopinsky/Rusty_Express/blob/master/examples/use_router.rs)
使用方法
在您的项目 Cargo.toml
中添加依赖
[dependencies]
rusty_express = "^0.3.0"
...
在 src\main.rs
extern crate rusty_express;
use rusty_express::prelude::*;
fn main() {
//A http server with default thread pool size of 4
let mut server = HttpServer::new();
//Change thread pool size from 8 (default) to 10.
server.set_pool_size(10);
//Route definition
server.get(RequestPath::Exact("/"), handler);
//Listen to port 8080, server has started.
server.listen(8080);
}
pub fn handler(req: &Box<Request>, resp: &mut Box<Response>) {
resp.send("Hello world from the rusty-express server!\n");
resp.status(200);
}
示例
依赖项
~7–16MB
~219K SLoC