1 个不稳定版本
0.0.1 | 2023 年 10 月 11 日 |
---|
#10 在 #nova 中
11KB
100 行
nova
nova_web
- 使用 Rust 编写的 Web 服务器框架
有关此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