问题标签 [rust-actix]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
csv - 如何反序列化actix Web表单数据并将其序列化为csv文件?
如何反序列化 actix_web 表单数据并将其序列化为 csv 文件?是否可以使用一个结构?如何覆盖 csv 错误场景?我正在尝试x-www-form-urlencoded
在我的第一个 Rust 程序中将表单数据保存到 csv 文件中,但是与 Ruby 相比,这种语言非常严格;)如何将负责保存到 csv 的代码移动到专用函数?
我有以下错误:
使用的库:
rust - 如何从 Rust 语言中的函数返回闭包?
我对 Rust 语言很陌生,并尝试使用 Actix Web 框架。现在我想从一个函数返回以下关闭
所以,我可以用
那么,Rust 函数的签名将是什么?
rust - 不遵守 Actix PayloadConfig 限制
我在 Actix 中设置有效负载限制时遇到问题。无论我如何尝试配置它(使用 app_data、数据、服务级别等),我总是会收到带有正文A payload reached size limit.
和以下日志的 413 http 响应:Error in response: Overflow
这是代码
其中代理是:
我也尝试设置其他配置,例如
但它也没有用
authentication - 如何在 actix-web 中创建受保护的路由
我需要验证用户是否有权访问某些路线。我已经创建了 3 个“范围”(guest、auth-user、admin),现在我不知道如何检查用户是否可以访问这些路由。
我正在尝试实现 auth-middleware,这个中间件应该检查用户是否拥有正确的 cookie 或令牌。(我能够从请求标头中打印出一个 cookie),但我不知道如何导入、使用 actix_identity 以及访问此中间件中的 id 参数。
我相信我的问题不仅与 Actix 身份有关,而且我无法在中间件中传递参数。
我尝试过的资源:
为 Actix API 创建身份验证中间件 https://www.jamesbaum.co.uk/blether/creating-authentication-middleware-actix-rust-react/
中间件中的 Actix-web 令牌验证https://users.rust-lang.org/t/actix-web-token-validation-in-middleware/38205
Actix 中间件示例https://github.com/actix/examples/tree/master/middleware
也许我认为完全错误并且 auth-middleware 不是解决我的问题的最佳解决方案。我希望你能帮我创建“受保护的路线”
websocket - 向具有多个 websocket 引用的客户端发送消息
我的问题是在将 actix-web 与 Rust 一起使用的背景下。
不幸的是,如果没有一个庞大的代码示例,我无法解释这一点,所以让我从这个开始。
让我先解释一下我要做什么。当我的客户端连接时,我与他们建立了一个 websocket。我需要这些 websocket 的列表,所以当游戏发生变化时,我可以将更新推送到所有客户端。
我将该函数绑定play_game
为play_game
路由的处理程序。在这个函数中,我将 HTTP get 请求升级为 websocket。在此之前,我复制了一个游戏的 Arc+RwLock 并将其传递给 MyWs,即 websocket 结构。你可以在handle
StreamHandler的MyWs impl的函数中看到我修改了Game(带some_method
函数)。到目前为止这很好。
当我尝试获取对 websocket 的多个引用时,事情就会爆炸。你可以看到play_game
我调用add_websocket
,给 Game 一个对它的引用,所以它可以在发生变化时将更新推送回所有客户端。例如,在调用 之后some_method
,我们将调用push_updates
。这样做的问题是ws::start
不接受 Arc,它必须接受一个 Actor,该 Actor 使用 WebSocketContext 实现 StreamHandler。
所以我主要的两个问题是:
- 我需要一种方法来保留对 websocket 的多个引用,这样我就可以从多个位置与客户端交谈(阅读:线程)。
- 我需要一些方法来做到这一点。我不确定在 actix 中如何在 MyWs 演员的上下文之外实际将消息发送回客户端。框架将 WebSocketContext 传递给
handle
,但我不知道如何自己动手。
我解决这个问题的想法:
- 在 MyWs 的
handle
(或started
)函数中,将对 Context 的引用传递到self.game
. 这不起作用,因为我要移出一个可变的 ref。 - 自己
ws::start
做一个可以参考的。我还没有尝试过,因为看起来我最终会重写很多。 - 以某种方式在 Arc 上实现 Actor 和 StreamHandler,或者我自己的具有内部可变性的结构/允许我保留对它的多个引用的东西。
这并不能真正帮助我发回消息,因为我仍然不知道如何通过handle
函数上下文之外的 websocket 发回消息。
对不起这个问题的长度。tl;dr 是,如何在 actix-web 中获取对 websocket 的多个引用并使用它们向客户端发送消息?
以下是我正在使用的每个组件的相关文档:
rust - 如何在 actix-web 服务器启动时运行回调函数?
目前我的主要功能,服务器开始的地方看起来像这样
一旦服务器启动,我想运行一个(异步)函数,向另一台服务器发出请求,并且该服务器应该向刚刚启动并运行的该服务器发出另一个请求。
不确定我在文档中是否看到任何提及仅在服务器启动时运行一次的回调函数。
例如,也许有它的run()
功能,像这样:
编辑 我想我解决了,当我可以回答我自己的问题时会发布答案
rust - Actix-web 松散类型 JSON 到强类型结构
我有一个案例需要对传入的 JSON 执行一些类型转换。不同的客户端以不同的类型发送几乎相同的数据:
我的结构和处理程序:
当我尝试执行 JSON 来构造序列化时,会发生反序列化错误。
我尝试使用 serde_json 序列化原始正文,但没有弄清楚如何正确进行存在检查和错误处理,所以我坚持:
这只能在夜间使用中完成try_trait
。我认为这是一种愚蠢的方式。
我有哪些选择?我正在使用 Rust 1.43 和 actix-web 2.0.0。
rust - Actix 2.0 中如何从请求中获取 Cookie
我想从请求中获取 cookie 的值。我发现在 Actix 0.xx 中,cookie 的值可以通过调用获得
我对 Rust 和 Actix 很陌生。目前我正在从声明的函数中解析它,该函数得到HttpRequest.headers()
. 我不确定在 Actix 0.xx 中是否有直接获取 cookie 的方法
postgresql - Actix Rust deadpool_postgres:未释放数据库连接
我有一个连接到 Postgres 数据库的 Actix-web 服务器。
我注意到在 1000 次请求后,我的 Postgres DB 的 RAM 使用率飙升。
当我停止 actix-web 时,db 持有的 RAM 被清除。这让我相信我的代码没有释放连接。
我找不到实际释放连接的示例。看起来它是在其他人的代码中推断出来的。
这是我的:
rust - actix-web如何通过解压缩zip文件发送响应数据流
如何实现actix-web响应发送文件数据流,我想通过解压zip文件发送到http响应体