如何为 actix_web() 配置 app_data()
How do I configure app_data() for actix_web()
在我的代码中有这个主要功能:
#[actix_web::main]
async fn main() -> Result<(), StdErr> {
// loads env variables from .env
dotenv::dotenv().ok();
actix_web::HttpServer::new(move || {
let cors = actix_cors::Cors::default()
//.allowed_origin(
// &(std::env::var("SERVER_URL").unwrap().to_string()+ ":" + &std::env::var("FROTEND").unwrap().to_string())
//)
.allow_any_origin()
.allowed_methods(vec!["GET","POST","PUT"])
.allowed_headers(vec![
actix_web::http::header::AUTHORIZATION,
actix_web::http::header::ACCEPT
])
.allowed_header(
actix_web::http::header::CONTENT_TYPE
)
.max_age(3600);
//logger::init();
let party_repo = repo::PartyRepo::PartyRepo::connect();
actix_web::App::new()
.app_data(party_repo)
.wrap(
cors
)
.service(controllers::PartyController::party_api())
})
.bind((std::env::var("SERVER_URL").unwrap().to_string(),
std::env::var("PARTY_CONTROLLER_PORT").unwrap()
.parse::<u16>().unwrap()))?
.run()
.await?;
Ok(())
}
编译正确;但是,当我 运行 服务器并尝试发出 get 请求时,我收到邮递员的 500 错误:App data is not configured, to configure use App::data()
.
现在我是生锈的新手,所以我可能遗漏了一些明显的东西。话虽如此,我的理解是 App.data()
主要与 Arc
一起使用。我试过 但我收到同样的错误。
让我知道是否应该包括更多 :) 谢谢!
查看 Data 文档中的示例。看来您必须将初始化的结构放在 Mutex
中,然后将其添加到 App
中。另请注意,您还需要将其作为互斥体包含在您的路径中 fn
。
let data = Data::new(Mutex::new(YOUR_DATA))
app.app_data(Data::clone(&data));
async fn index(data: Data<Mutex<YOUR_DATA_TYPE>>) -> impl Responder {
}
在我的代码中有这个主要功能:
#[actix_web::main]
async fn main() -> Result<(), StdErr> {
// loads env variables from .env
dotenv::dotenv().ok();
actix_web::HttpServer::new(move || {
let cors = actix_cors::Cors::default()
//.allowed_origin(
// &(std::env::var("SERVER_URL").unwrap().to_string()+ ":" + &std::env::var("FROTEND").unwrap().to_string())
//)
.allow_any_origin()
.allowed_methods(vec!["GET","POST","PUT"])
.allowed_headers(vec![
actix_web::http::header::AUTHORIZATION,
actix_web::http::header::ACCEPT
])
.allowed_header(
actix_web::http::header::CONTENT_TYPE
)
.max_age(3600);
//logger::init();
let party_repo = repo::PartyRepo::PartyRepo::connect();
actix_web::App::new()
.app_data(party_repo)
.wrap(
cors
)
.service(controllers::PartyController::party_api())
})
.bind((std::env::var("SERVER_URL").unwrap().to_string(),
std::env::var("PARTY_CONTROLLER_PORT").unwrap()
.parse::<u16>().unwrap()))?
.run()
.await?;
Ok(())
}
编译正确;但是,当我 运行 服务器并尝试发出 get 请求时,我收到邮递员的 500 错误:App data is not configured, to configure use App::data()
.
现在我是生锈的新手,所以我可能遗漏了一些明显的东西。话虽如此,我的理解是 App.data()
主要与 Arc
一起使用。我试过
让我知道是否应该包括更多 :) 谢谢!
查看 Data 文档中的示例。看来您必须将初始化的结构放在 Mutex
中,然后将其添加到 App
中。另请注意,您还需要将其作为互斥体包含在您的路径中 fn
。
let data = Data::new(Mutex::new(YOUR_DATA))
app.app_data(Data::clone(&data));
async fn index(data: Data<Mutex<YOUR_DATA_TYPE>>) -> impl Responder {
}