rust 如何在actix web 4上使用中间件?

kqlmhetl  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(298)

我正在尝试使用一个简单的中间件与ActixWeb 4:

HttpServer::new(
    move || {
        let app_state = AppState {
            db_helper: external_db.clone(),
            client: Client::new(),
        };
        App::new()
            .wrap_fn(|req, srv| {
                let header = req.headers().get("Test").unwrap().to_str().unwrap().to_owned();
                let fut = srv.call(req);
                async move {
                    let res = fut.await?;
                    println!("{:#?}", header);
                    Ok(res)
                }
            })
            .app_data(web::Data::new(app_state))
            .service(web::scope(API_PATH)
                .service(user_controller::user_scope())
            )
    })
    .bind(SERVER_URL)?
    .run();

这是他们教程中的一个非常简单的示例。但是,我总是得到一个错误:

let fut = srv.call(req);
               ^^^^ method cannot be called on `&actix_web::app_service::AppRouting` due to unsatisfied trait bounds

我该如何解决这个问题?

v6ylcynt

v6ylcynt1#

您需要将该特征引入范围,

use actix_web::dev::Service;

相关问题