1 个不稳定版本

0.0.1 2023 年 10 月 11 日

#10#nova


4 个crate中使用 (2 个直接使用)

MIT/Apache

11KB
100

nova

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

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

有关此crate的更多信息,请参阅 crate 文档
使用示例可以在这里找到 examples。文档中还包含代码片段。

crate 功能

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

[待办] 自定义中间件包括预实现的常用中间件,如 [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
}

性能

[待办] 准备基准测试

安全性

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

最低支持的 Rust 版本

MSRV for nova 是 1.63

示例

使用示例可以在 此处 找到。文档中也包含代码片段。
[待办] 更多示例、片段和信息可以在 wiki 中找到。

许可证

项目采用 Apache 许可证MIT 许可证

贡献

除非明确声明,否则任何有意提交以包含在 nova 中的贡献,应许可为 Apache 或 MIT,不得附加任何额外条款或条件。

依赖项

~1–1.9MB
~42K SLoC