#web-framework #express #node #后端 #性能 #难度

rusty_express

一个用Rust编写的简单HTTP服务器库,并提供类似Express的API。我们知道Rust很难用,所以我们确保你的服务器易于使用,无需担心!

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次

MIT 许可证

220KB
5K SLoC

Rusty_Express

Rusty_Express on crates.io Rusty_Express on docs.rs

这是什么

这是一个用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