我想弄清楚如何Extension https://docs.rs/actix-web/3.3.2/actix_web/dev/struct.Extensions.htmls 创建于Actix-网络 https://crates.io/crates/actix-web铁锈库。我认为我缺少请求扩展的概念。请求扩展有什么作用?它们与 HTTP 标头有何不同?
扩展用于存储请求本地数据。它们与应用程序数据不同,因为它特定于单个请求。与标头不同,因为它们是在服务器内设置的,而不是由客户端设置的。
这主要用于在中间件和处理程序之间传递数据;例如身份验证或路由前缀处理。它们可以通过以下方式在中间件中设置req.extensions_mut().insert(...) https://docs.rs/actix-web/3.3.2/actix_web/dev/struct.ServiceRequest.html#method.extensions_mut并可以通过以下方式在处理程序中检索req.extensions().get<...>() https://docs.rs/actix-web/3.3.2/actix_web/struct.HttpRequest.html#method.extensions或通过ReqData https://docs.rs/actix-web/3.3.2/actix_web/web/struct.ReqData.html提取器。
也可以看看:
- 如何修改actix-web中间件中的请求数据? https://stackoverflow.com/q/68758767/2189130
- 如何将结构从 Actix 中间件传递到处理程序? https://stackoverflow.com/q/63673447/2189130
- 有没有办法将变量绑定到 tower-http / hyper / axum 中的请求? https://stackoverflow.com/questions/69328888/is-there-a-way-to-bind-a-variable-to-a-request-in-tower-http-hyper-axum
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)