有没有办法在 actix-web 中拆分服务器路由声明?

nxy*_*xyt 3 rust actix-web

我现在有以下服务器声明

let server = HttpServer::new(move || {
    App::new()
        .app_data(actix_web::web::Data::new(pool.clone()))
        .service(ping)
        .service(stock::controller::get_all)
        .service(stock::controller::find_one)
        .service(stock::controller::insert_one)
        .service(stock::controller::insert_many)
})
.bind(("127.0.0.1", 7777))?
.run();
Run Code Online (Sandbox Code Playgroud)

我觉得当我添加其他路线时,它会很难控制。有没有办法把它分开,这样我就可以得到类似的东西

App::new()
        .app_data(actix_web::web::Data::new(pool.clone()))
        .service(ping)
        .service(stock::controller::routes)
Run Code Online (Sandbox Code Playgroud)

路由函数是否添加了第一个代码示例中声明的所有服务?

aed*_*edm 5

您可以创建路由范围:

HttpServer::new(|| {
    let stocks_controller = actix_web::web::scope("/stocks")
        .service(get_all)
        .service(find_one)
        .service(insert_one);
    App::new()
        .service(ping)
        .service(stocks_controller)
})
Run Code Online (Sandbox Code Playgroud)

更多信息请点击这里