1 个不稳定版本

0.0.1 2023 年 10 月 11 日

#11#nova


用于 3 crates

MIT/Apache

50KB
922

nova

nova_web - 一个用 Rust 编写的 Web 服务器框架

crates.io Documentation MIT or Apache 2.0 licensed MSRV
CI downloads Dependency Status

有关此crate的更多信息,请参阅crate 文档
使用示例可以在此处找到 examples

Crate 特性

  • 无宏的路由处理
  • 用于解析请求体的 serde 集成
  • [todo] 由宏注册的处理程序
  • [todo] OpenApi 支持
  • 自定义 Middleware 集成
  • [todo] 自定义依赖注入集成

[todo] 自定义中间件包括预先实现的常用中间件如 [middleware..].
自定义依赖注入提供了控制数据库连接或其他外部集成等依赖项的灵活性。

使用示例

在 Cargo.toml 中

[dependencies]
nova_web = "0.0.1"
tokio = "1.32"
serde = { version = "1.0", features = ["derive"] }
use nova_web::prelude::*;

#[derive(Debug, Deserialize, Serialize)]
struct RequestBody {
    id: String,
    name: String,
}

fn hello_world(_: &HttpRequest, res: &mut HttpResponse) -> ServerResponse {
    Ok(res
        .status(HttpStatus::OK)
        .body("Hello, world!".as_bytes()))
}

fn hello_json(req: &HttpRequest, res: &mut HttpResponse) -> ServerResponse {
    let body: RequestBody = req.json()?;
    Ok(res
        .status(HttpStatus::OK)
        .body(format!("Hello, {}!", body.name).as_bytes()))
}

#[tokio::main]
async fn main() -> Result<(), ServerError> {
    Server::create("0.0.0.0", 3000)
        .service("/hello", vec![
            get("/", hello_world),
            post("/json", hello_json),
        ].into())
        .bind()
        .await
}

性能

[todo] 准备基准测试

安全性

此crate在 #![forbid(unsafe_code)] 之上使用限制性的 linter 设置,以确保源代码的安全性和清晰性。

最低支持的 Rust 版本

MSRV for nova 是 1.63

示例

使用示例可在此处找到 examples。文档还包括代码片段。
[todo] 更多示例、片段和信息可在 wiki 上找到。

许可证

该项目受 Apache 许可证MIT 许可证 许可。

贡献

除非明确说明,否则任何有意提交给 nova 的贡献都应按照 Apache 或 MIT 许可,不附加任何额外条款或条件。

依赖项

~2.2–3.5MB
~64K SLoC