首页 > 解决方案 > 在 FromRequest 实现中获取应用状态

问题描述

我有一个 actix Web 服务器,我想在一个FromRequest实现中获取我的服务器的状态。

我试过类似的东西:

impl FromRequest for User {
    type Config = ();
    type Error = Error;
    type Future = Pin<Box<dyn Future<Output = Result<User, actix_web::Error>>>>;

    fn from_request(req: &HttpRequest, pl: &mut Payload, state: web::Data<State>) -> Self::Future {
       ...
    }
}

但是当然,这不起作用,因为from_request只要求 2 个参数,而不是 3 个。

标签: actix-webrust-actix

解决方案


你可以做:

fn from_request(req: &HttpRequest, pl: &mut Payload) -> Self::Future {
   let _state = req.app_data::<Data<State>>();
   ....
}

请参阅app_data的文档


推荐阅读