问题标签 [actix-web]

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.

0 投票
1 回答
1195 浏览

rust - 如何在 actix-web 提取器中使用异步代码?

我正在使用 sqlx 在 actix-web 2.0.0 中实现身份验证提取器来访问数据库。我有这个代码:

当然,我不能await在那里使用。我看到了一个使用type Future = Pin<Box<dyn Future<Output = Result<Self, Self::Error>>>>和返回的例子,Box::pin(async move { ... })但我无法让它工作(有生命周期的问题req)。

0 投票
1 回答
455 浏览

rust - Actix-web 2.0 JsonConfig error_handler 不工作

我有下面的代码,一切正常,期待error_handler. 我不确定有什么问题。如果我以正确的格式发出发布请求,我会得到 200 响应数据。但是在糟糕的请求下,我期望 400 没有接收到 JSON 数据。它只是说 400,但不返回任何错误 json 数据。

预期行为

错误请求 ->curl -X POST -H "Content-Type: application/json" -d '{"bad": "Someone was here"}' localhost:8080/send

当前行为

错误请求 ->curl -X POST -H "Content-Type: application/json" -d '{"bad": "Someone was here"}' localhost:8080/send

可能的解决方案

我用它替换.data.app_data可以工作,但后来它无法找到AppState

代码

错误处理程序

环境

  • 流行操作系统 20.04 LTS
  • Rust 版本:rustc 1.45.2 (d3fb005a3 2020-07-31)
  • Actix 网页版:2.0.0
0 投票
0 回答
331 浏览

rust - 将相同的消息发送给其他参与者,而无需在 Actix/Rust 中进行克隆

我需要将相同的消息对象发送给其他参与者。每次克隆它都会非常昂贵。它实际上不应该是必要的。我得到了预期的错误。“值移动到这里,在循环的前一次迭代中”。

用 & 传递参数不起作用。我不能用Weak/Arc参考来做到这一点。Actix 似乎不支持它(弱/弧消息)。

这怎么可能是这种情况下的最佳解决方案?

0 投票
1 回答
132 浏览

rust - 有什么方法可以重用相同的结构,还是我需要在 Rust 中构建一个新结构?

我在 postgres 中得到了这张表

有了这个

我得到了这个结构

我正在用这个进行查询:

但是,当我收到此错误时

有什么方法可以重用相同的结构还是我需要构建一个新结构?

0 投票
2 回答
4682 浏览

rust - 使用 actix-web 2.0 提供静态文件

我正在努力使用 rust 的 actix-web 2.0 框架。我希望我的 rust 服务器为我的 index.html 文件提供服务,但大多数可用的帮助都是旧版本的,因此在新版本中发生了很多变化。我尝试了以下代码,但它不适用于 actix-web 2.0。请在 actix-web 2.0 中提出一些可行的解决方案。对不起,我在生锈方面很新。

Edit1:我收到类型不匹配错误,但使用评论中回答的 pathBuf 救了我。

Edit2:通过尝试答案中给出的代码,我可以提供单个 html 文件,但无法加载链接的 javascript 文件。我尝试了https://actix.rs/docs/static-files/中建议的以下方法来提供目录

以上是我的主要方法。在浏览器控制台中,我仍然收到无法加载 Registration.js 资源的错误。以下是我的文件夹结构:

我已经用数据库集成构建了后端,并且通过 curl 命令检查它工作正常,现在我尝试构建前端并作为尝试提供静态文件的第一步。

Edit3:也帮助我解决此问题的示例是https://github.com/actix/examples/tree/master/static_index

0 投票
0 回答
228 浏览

rust - 如何从 actix::Addr 访问 A

我在阅读 rust 文档时发现自己有点迷茫,现在我无法找到从中提取的方法Aactix::Addr<A>我也不知道这是否可能。

锈操场

重要部分:

0 投票
1 回答
1295 浏览

rust - 如何将结构从 Actix 中间件传递给处理程序?

我正在尝试为我的 Actix 应用程序编写身份验证中间件。在中间件中验证请求时,我调用数据库以检索必要的用户数据以验证传入请求。一旦请求被授权,我希望能够将此用户数据传递给处理程序,因为这将允许我避免两次查询相同的数据。

我找不到解决方案。到目前为止我能找到的最好的建议是“设置请求扩展”。似乎没有任何示例,并且围绕此的文档也太少,无法确定在这里做什么。

0 投票
0 回答
515 浏览

linux - 在 Linux 上使用 actix-web + mongo 编译应用程序内存不足

我无法在 Linux(Ubuntu 18 Bionic Beaver)上编译以下内容。我已经尝试过 Docker 和 VirtualBox VM,但rustc最终都耗尽了内存。该代码在 macOS 上编译没有问题,直到大约 5 天前才在 Linux 上编译。

Cargo.toml 中的依赖项:

在最后一个成功的 CI 构建和第一个开始失败的 CI 构建之间唯一改变的是向服务器添加一个端点(本质上是现有端点的复制/粘贴),以及时间箱上的一个小版本碰撞(间接依赖)。检查最后一个工作提交并尝试构建它不起作用。

如果我删除awaiton调用,它将在 Linux 上编译,但如果我将该调用(带有)放在非 Actix 中find(),它也会编译。findawaitasync fn

如果我使用syncmongo 的功能,它也可以工作,这并不理想。

降级到 Rust 1.45 允许它编译,所以显然 1.46 版本中的某些东西以某种方式破坏了 actix 或 mongo crate。

因为这段代码在 macOS 上运行,并且上周在 Linux 上运行,所以我假设在这样的 Actix-web 路由处理程序中使用 Mongo 没有根本问题。我错过了什么吗?

0 投票
1 回答
2256 浏览

postgresql - tokio-postgres 和数据库查询

有这样一个模块代码(用于处理数据库):

问题:
在这种情况下,应该如何编写对数据库的访问?
(该指南没有说任何关于它的内容 - 或者我没有完全理解它。)
https://docs.rs/tokio-postgres/0.5.5/tokio_postgres/
在这种情况下什么机制可以保护对数据库的访问从 sql 注入?
需要最简单的通用用例。

0 投票
1 回答
705 浏览

rust - 如何在 Rust 中将变量传递给 actix-web guard()?

错误是:

.data()在 actix 文档中看到,但那是用于在路由函数中传递变量。

升级版:

如果我添加“移动”:

然后只是错误更改: