Rust Axum 路由器子目录

问题描述 投票:0回答:1

我刚刚开始学习 Rust Axum,我想知道应该如何构建我的项目。

现在,我的项目是一个简单的内存待办应用程序,它是从 YouTube 教程中窃取的,他在其中为特定文件夹定义了一个路由器。 现在的结构如下所示:

.
├── Cargo.lock
├── Cargo.toml
└── src
   ├── in_memory
   │  ├── mod.rs
   │  ├── routes.rs
   │  └── state.rs
   └── main.rs

我对用于路由的函数都写在同一个文件中感到不舒服,但我同意这样。

如果有人知道我是否可以编写一个文件,那么我可以导入很棒的功能。

现在我的问题如下:

如果我想让我的项目更大并添加另一个部分,我应该将所有新代码放在哪里? 我必须使用同一个文件吗?

rust router rust-tokio rust-axum
1个回答
0
投票

我想您想知道是否可以将路线拆分为单独的文件。如果是的话你可以试试这个。

首先创建模块。 导出其中模块的路由 并使用 merge 将这些路由合并到您的主文件中

  • 路线
    • 路线1.rs
    • route2.rs
  • 路线.rs
  • main.rs

路线1.rs

pub async fn list(
request: Request,
) -> Json<serde_json::Value> {
let val= SOMETHING

Json(val)
}
pub fn_get_routes(){
Router::new()
.route("/",get(list))
... other routes
}

路线.rs

mod route1;
mod route2;

main.rs

#[tokio::main]
async fn main() -> Result<(), Error> {


let app = Router::new()
   
   
    .merge(routes::route1::get_routes())
    .merge(routes::route2::get_routes())

run(app).await
async fn main() -> Result<(), Error> {


let app = Router::new()
   
   
    .merge(routes::route1::get_routes())
    

run(app).await
}

合并路线将模块分成不同的文件

© www.soinside.com 2019 - 2024. All rights reserved.