只有在满足外部条件的情况下,我才需要添加到Actix_web的路由.由于Actix_web的App
使用构建器模式,而对App::route
的每次调用都使用应用程序实例,因此我似乎找不到一种合理的方法来有条件地添加路由.
示例(这不起作用,但说明了我要做的事情):
let mut app = App::new()
.app_data(server_data.clone())
.route(
"/shoobidoo",
web::get().to(handlers::shoobidoo_handler)
);
if let Some(login_path) = &config.login_path {
app.route(
login_path,
web::get().to(handlers::login)
);
}
我可以使用守卫,但这似乎很奇怪,而且过于复杂,因为这意味着我仍然必须添加具有虚拟路径的处理程序.