问题标签 [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 投票
1 回答
1851 浏览

rust - 如何在 actix-web 中执行异步功能?

async connect()如下功能。

首先,我尝试connect()futures::executor::ThreadPool::run. 它会恐慌,因为actix_web::client::Client必须在 actix 框架上下文中使用。

如何在 actix 上下文中执行 connect()?

我也尝试了下面的代码。它不编译。

它以编译错误结束。

我还在学习 Rust。请问有人可以帮忙吗?赞赏。

Rust 版本:每晚 1.39

0 投票
1 回答
518 浏览

rust - Error handling and conditional chaining of Actix actors

This is my first attempt at writing a small webservice with rust, using actix-web.

The code below is a request handler that is intended to do three things, insert an entry in the database, send an email if that db call was successful, and then return a json payload as the response.

data.dal (database call) and data.email_service are references to Actors.

The issue: is I am unable to capture the error returned by data.dal. Any attempt to reconfigure the below code seems to give me an error stating the compiler wasn't able to find a conversion from Actix Mailbox to [Type].

Is there an alternate/better way to rewrite this? Basically when the request is issued, I'd like to be able to call Actor A. And if the result from A is Ok then call Actor B. If the results from both are okay return a JSON payload. If either A or B return an error (can have different error types), return an custom error message.

0 投票
1 回答
1895 浏览

rust - 如何将异步/标准库 future 转换为 futures 0.1?

我想使用该async函数逐步解析入站流,但 actix-web 需要impl Future<Item = HttpResponse, Error = Error>作为返回值。

如何将async函数返回的未来转换为 actix-web 所需的?

我每晚使用 Rust 1.39 和 actix-web 1.0.7。

http_srv.rs

货物.toml

编译错误

0 投票
2 回答
2394 浏览

json - 如何使用 Actix-Web 从同一请求中提取路径参数并解析 JSON 正文

我正在使用 Actix-Web v1.0.7 在 Rust 中编写一个 Web 应用程序。我正在尝试创建一个可以访问路径参数并解析请求的 JSON 正文的路由处理程序。但是,到目前为止,我还没有这样做。

我尝试声明一个可以接受actix_web::HttpRequest作为参数的处理函数。match_info这使我可以毫无问题地使用方法访问路径参数。然后我尝试使用actix_web::web::Json::from_request方法(来自actix_web::FromRequesttrait 实现)解析 JSON 主体,该方法需要 2 个参数:

  1. &actix_web::HttpRequest
  2. &mut actix_web::dev::Payload

我的问题是获取actix_web::dev::Payload. 我尝试使用该actix_web::HttpRequest::take_payload方法(来自actix_web::HttpMessage特征实现),但特征实现将单位值声明为Stream有效负载内部,这意味着我被卡住了。我认为这是由于框架的异步特性,并且可能在调用处理程序时尚未收到请求正文。然而,这只是一个假设。

我知道上面的代码片段无法编译并包含其他问题,但它传达了总体思路。我希望有一种方法可以从路径中获取 ID 参数的值,并且还能够解析同一请求的 JSON 正文,但到目前为止我还没有找到。

0 投票
2 回答
4137 浏览

server - 如何从 actix-web 中间件返回早期响应?

我的客户通过标头中的令牌进行授权Authorization,每个请求都需要检查该令牌。如果此标头丢失或找不到对应的用户,我想返回 HTTP 代码Unauthorized,否则我想正常处理请求。

目前我有很多重复的代码,因为我在每个请求处理程序中检查这个标头。actix 文档在第一段中建议可以halt request processing to return a response early. 如何做到这一点?

由于我还没有找到实现此行为的示例,因此我尝试提出自己的中间件函数,但无法编译。

我已经将返回值装箱以克服返回两种不同类型 (ServiceResponseMap) 的问题,所以在如何有条件地返回不同类型的期货?不是问题。更重要的是,我不知道哪些类型的 trait 实现需要作为该wrap_fn函数的返回值。我现在拥有的那些不起作用。

我在编译时遇到了两个错误。

1.

2.

0 投票
2 回答
681 浏览

mongodb - Rust Actix Web 是否支持 MongoDB?

我有一个新的 Rust Programming 后端学习。从 Web 框架开始。因为我想在 MongoDB 中使用 Rust 后端,所以我有 Nickel 的示例代码。无论如何,我也看到有 Actix Web 框架。

Actix Web 是否像 Nickel 一样支持 MongoDB?

以下示例为 MongoDB 提供 Nickel。

0 投票
0 回答
310 浏览

rust-actix - 如果提供 SSL,Actix 会自动处理 HTTP/2 websocket 升级吗?

我想知道是否可以在 Actix 中升级 HTTP/2 并使用带有二进制数据交换的 websocket。我目前正在关注此处提供的示例:https ://github.com/actix/examples/blob/master/websocket/src/main.rs

根据以下文档:https ://github.com/actix/actix-website/blob/master/content/docs/http2.md它声称:actix-web automatically upgrades connections to HTTP/2.0 if possible.

基本上,如果我使用上面的示例(添加必要的 SSL 详细信息)并从我的客户端发出请求作为 HTTP/2 websocket 请求,这个源会自动充当 HTTP/2 还是只使用基本的 websocket?

这里有什么我应该注意的问题还是我完全错了?

0 投票
1 回答
1984 浏览

traits - How can I fix "actix_web::handler::AsyncFactory<_, _> is not implemented" error?

This is my code. I'm trying to get posts from the Rust subreddit. I would be using Actix's built in client, but it's not working on Windows, hence the use of reqwest instead:

This is the error:

0 投票
1 回答
686 浏览

rust - 如何从 actix 处理程序调用固定的未来?

我有一个异步特征方法,它返回一个标准未来:

ResultType是 trait 的关联类型Sync + Send

请注意,此类型不是 Unpin

我想从一个 actix 处理程序中调用它,然后对结果做一些事情。

例如:

这失败了,因为into_actor取得了未来的所有权,这是不允许的Pin。清理后的错误消息如下所示:

我怎样才能做到这一点?

0 投票
1 回答
393 浏览

rust - 为什么 actix_rt 可以直接在代码中使用,即使没有声明?

我只是在 Cargo.toml 中添加了 actix_rt,并没有在第一行使用 use 关键字声明它。然后我可以在代码中使用它。我知道 Rust 的前奏中包含了一些常用的功能,但我不知道 3rd 方库可以做一些事情。我可以创建一个这样的箱子吗?

任何人都可以告诉我为什么或给我一些提示或一些参考链接?我会很感激的。