问题标签 [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.

0 投票
0 回答
265 浏览

rust - 使用带有生命周期参数的应用程序状态会导致 rust 编译器中的生命周期问题

我已将应用程序状态定义为具有生命周期参数,如下所示:

并按预期将其传递给actix服务器,代码如下:

当我尝试访问存储在路由中的应用程序状态中的数据库时,请参见下文:

我收到以下错误:

我一直在戳戳这个问题,尝试不同的生命周期,指定一个人应该比另一个人活得更长,等等都无济于事。我想我缺少对为什么会发生此错误消息的具体理解。我的思考过程是客户端和数据库都是在函数内部借用的,所以我很困惑为什么当函数结束时它们被删除应该是一个问题。

我会注意到我的代码(比这个例子大)在我向应用程序状态引入生命周期参数之前都运行良好,所以我假设我只是没有提供编译器之前没有提供的一些生命周期参数。

我希望当前的示例足以至少对出了什么问题有所了解。

任何帮助将不胜感激,我对 rust/actix 还很陌生,并且努力让这个(看起来应该是相当常见和简单的用例)工作。

0 投票
1 回答
1206 浏览

json - 使用 actix_web 对部分结构进行 Serde 反序列化

我有一个 API 端点,actix_web用于反序列化传入的 JSON 有效负载(actix_web最终serde用于 JSON 反序列化)。

例如,我有一些看起来像这样的东西:

serde目前,只有能够反序列化结构的所有字段,此端点才会成功返回。即一个请求必须包含field1field2键。

例如,这将是成功的:

但这不会(因为field2有效载荷中缺少):

所以我的问题是,这可以做到吗?可以将带有键值字段子集的 JSON 有效负载发送到actix_web期望所有字段都存在的端点吗?

或者更确切地说,是否有一种通用的方法可以用actix_webor反序列化像这样的部分结构serde

0 投票
1 回答
449 浏览

json - 如何从另一个文件调用函数并在网络中获取

我是 Rust 的新手,但我仍在学习。有一个带有 main.rs 和 routes.rs 的 rust 应用程序。main.rs 文件具有服务器配置,而 routes.rs 具有带路径的方法。

main.rs

路线.rs

现在我想要的是我想使用另一个单独的 rs 文件(fetch_test.rs)中的方法获取 API,并将其路由到 routes.rs 文件中。然后我想通过运行该路由路径(链接)从网络浏览器获取响应。

我该怎么做这些事情?我到处搜索,但没有发现任何帮助。有时我也看不懂一些文件。

**更新。

fetch_test.rs

错误。

**再次更新。

**新错误。

0 投票
0 回答
547 浏览

api - 如何在 Rust 中解决这个 reqwest 标头错误或 API 错误

我正在创建一个 Rust Web 应用程序。我正在尝试发出 API 请求并将请求的结果作为响应传递给 Web 视图。有 main.rs 、 route.rs 和 common.rs 文件。基本上 main.rs 文件调用相关路由,然后路由将调用该函数。问题是,现在我构建它时没有错误。但是,当我尝试使用网络浏览器运行它时,它在浏览器中给了我这个错误。

这也显示在终端中。

我想知道的是,我是否以正确的方式发送标头?还是我做错了什么?我怎样才能解决这个问题?

路由.rs

common.rs

0 投票
0 回答
441 浏览

multithreading - 在 Rust 中协调队列和线程?

我正在尝试在 Rust 中实现以下流程: 线程流

  1. 条目 (JSON) 被提交给 Actix Web 侦听器并进行处理
  2. 条目被提交到“可观察队列”
  3. 通知 Actix Web 客户端
  4. 客户端将其发送(通过 HTTP)到后端。这可能会失败
  5. 如果失败,如果提交失败少于 10 次,则将条目交给“计时器”
  6. 30 秒后,计时器将条目重新提交到队列中,并且流程在 3 处恢复

我使用vert.x和 Java(GitHub 项目)解决了这个问题,并希望将其用作学习 Rust 的示例项目。

更新:

找到了actix 文档并实现了 Actix::Actor,它涵盖了 1->4

这大大缩小了我的问题:

  • 如何构建延迟计时器?
  • 当我在我的main()方法中启动演员时,它也使用let c_store = CommentStore::start(CommentStore {});我在c_store. 但是,我需要在指定为 Route 目标的异步函数之一中发送给参与者。我如何最好地移交地址。全局变量似乎不是答案。

当前主要功能

非常感谢帮助

0 投票
1 回答
245 浏览

mongodb - 在`mongodb` Rust Lang 中找不到`options`

我正在尝试使用 mongodb 库在 rust 中连接到 mongodb

这是代码

我收到以下错误

  1. 错误[E0432]:未解决的导入mongodb::options

  2. 使用 mongodb::{Client, options::ClientOptions}; | options^^^^^^^找不到mongodb

  3. 让客户端 = Client::with_options(client_options)?; | ^^^^^^^^^^^^ 函数或相关项目未在std::sync::Arc<r2d2_mongodb::mongodb::ClientInner>

在此处输入图像描述

0 投票
1 回答
2620 浏览

mongodb - 特征`std::convert::From` 没有为`std::io::Error` 实现`

试图在 rust 中使用 actix-web 和 mongodb 制作服务器。得到错误

该特征std::convert::From<mongodb::error::Error>未实现std::io::Error

这是我的代码

我错过了什么吗?

0 投票
0 回答
528 浏览

rust - Actix-Web 运行时错误:线程 'actix-rt:worker:2' 在 'AuthenticationMiddleware 已被调用' 处惊慌失措

我有一个actix-web使用HttpAuthentication中间件对所有请求进行身份验证的服务器。服务器运行良好并且正确响应大多数请求,但偶尔某些请求会触发错误:

thread 'actix-rt:worker:2' panicked at 'AuthenticationMiddleware was called already

对同一端点的请求只会在某些时候触发错误,所以我不确定根本原因是什么。

我的main()功能(仅包含相关代码是:

作为参数validator传递给的函数是:process_fnHttpAuthentication::basic

该功能本质上只是检查请求中发送的基本身份验证用户名和密码的有效性。据我了解,这应该包装服务器上的每个端点,并且只允许经过身份验证的请求通过。

我不明白为什么我会收到此运行时错误。有没有人知道为什么会这样?

0 投票
1 回答
2301 浏览

rust - 如何在非异步函数上等待 Rust Future

Rust 新手(学习不到 7 天),在所有权规则之后我试图克服的第二个障碍是异步/等待。

我正在编写一个调用函数的测试,我需要在不使用关键字的情况下async从中获取结果。Futureawait

我看过async_test,但是我不能使用它,因为(据我所知)这需要我的方法中的tokio运行时和#[tokio_main]属性main- 但我main已经用#[actix_rt::main]

这是我的测试

我尝试过但失败的事情(主要是由于我缺乏 Rust 知识)

我不明白为什么这必须如此复杂,也许某处有一个简单的功能(如wait()或) ?get_result()Future

谢谢你的帮助。

0 投票
1 回答
678 浏览

rust - 使用 actix 启动计划任务并访问自己

rust 的新手,我在处理 rust 中的异步和生命周期时遇到了一些问题。

我尝试将计划任务运行到 Actix 运行时 (actix-web)
我被阻止了生命周期的原因。

我得到了这个错误:

代码 :

在我的主要功能中: