首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在actix-web rust web框架中,当前的StatusCode在中间件中是否可用?

在actix-web rust web框架中,当前的StatusCode在中间件中是否可用?
EN

Stack Overflow用户
提问于 2021-08-12 16:12:00
回答 1查看 65关注 0票数 0

我正在使用actix-web 3。我想从Actix-web的中间件系统中访问当前状态代码。

我想根据状态代码修改请求,可以吗?

例如,如果用户发送一些数据,导致actix-web生成413代码,我希望修改请求。我可以通过使用actix_web::middleware::errhandlers::ErrorHandlers的处理程序来修改响应,但是这些处理程序只有mut res: actix_web::dev::ServiceResponse作为它们的参数,而且我似乎无法找到从这些处理程序中访问actix_web::dev::ServiceRequest对象的方法。

我想使用基本的中间件,因为中间件中提供了actix_web::dev::ServiceRequest和actix_web::dev::ServiceResponse对象。

EN

回答 1

Stack Overflow用户

发布于 2021-08-13 09:23:44

我似乎忘记了中间件是如何工作的。

状态代码可以通过使用中间件代码中的HttpResponse对象的status()方法来获得。实现 actix_web::dev::Service特征的代码可以访问HttpResponse,如下所示。

由于状态是在发送请求后生成的,因此无法提前知道状态,从而无法修改请求。

代码语言:javascript
复制
        let fut = self.service.call(req);

        Box::pin(
            async move
            {
                let res = fut.await?;
    
                println!("Hi from response, res.status is:'{}'",res.status());
                Ok(res)
            }
        )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68760900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档