问题标签 [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.
rust - 如何在 actix-web 中执行异步功能?
有async
connect()
如下功能。
首先,我尝试connect()
按futures::executor::ThreadPool::run
. 它会恐慌,因为actix_web::client::Client
必须在 actix 框架上下文中使用。
如何在 actix 上下文中执行 connect()?
我也尝试了下面的代码。它不编译。
它以编译错误结束。
我还在学习 Rust。请问有人可以帮忙吗?赞赏。
Rust 版本:每晚 1.39
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.
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:
编译错误:
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::FromRequest
trait 实现)解析 JSON 主体,该方法需要 2 个参数:
&actix_web::HttpRequest
&mut actix_web::dev::Payload
我的问题是获取actix_web::dev::Payload
. 我尝试使用该actix_web::HttpRequest::take_payload
方法(来自actix_web::HttpMessage
特征实现),但特征实现将单位值声明为Stream
有效负载内部,这意味着我被卡住了。我认为这是由于框架的异步特性,并且可能在调用处理程序时尚未收到请求正文。然而,这只是一个假设。
我知道上面的代码片段无法编译并包含其他问题,但它传达了总体思路。我希望有一种方法可以从路径中获取 ID 参数的值,并且还能够解析同一请求的 JSON 正文,但到目前为止我还没有找到。
server - 如何从 actix-web 中间件返回早期响应?
我的客户通过标头中的令牌进行授权Authorization
,每个请求都需要检查该令牌。如果此标头丢失或找不到对应的用户,我想返回 HTTP 代码Unauthorized
,否则我想正常处理请求。
目前我有很多重复的代码,因为我在每个请求处理程序中检查这个标头。actix 文档在第一段中建议可以halt request processing to return a response early
. 如何做到这一点?
由于我还没有找到实现此行为的示例,因此我尝试提出自己的中间件函数,但无法编译。
我已经将返回值装箱以克服返回两种不同类型 (ServiceResponse
和Map
) 的问题,所以在如何有条件地返回不同类型的期货?不是问题。更重要的是,我不知道哪些类型的 trait 实现需要作为该wrap_fn
函数的返回值。我现在拥有的那些不起作用。
我在编译时遇到了两个错误。
1.
2.
mongodb - Rust Actix Web 是否支持 MongoDB?
我有一个新的 Rust Programming 后端学习。从 Web 框架开始。因为我想在 MongoDB 中使用 Rust 后端,所以我有 Nickel 的示例代码。无论如何,我也看到有 Actix Web 框架。
Actix Web 是否像 Nickel 一样支持 MongoDB?
以下示例为 MongoDB 提供 Nickel。
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?
这里有什么我应该注意的问题还是我完全错了?
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:
rust - 如何从 actix 处理程序调用固定的未来?
我有一个异步特征方法,它返回一个标准未来:
ResultType
是 trait 的关联类型Sync + Send
。
请注意,此类型不是 Unpin。
我想从一个 actix 处理程序中调用它,然后对结果做一些事情。
例如:
这失败了,因为into_actor
取得了未来的所有权,这是不允许的Pin
。清理后的错误消息如下所示:
我怎样才能做到这一点?
rust - 为什么 actix_rt 可以直接在代码中使用,即使没有声明?
我只是在 Cargo.toml 中添加了 actix_rt,并没有在第一行使用 use 关键字声明它。然后我可以在代码中使用它。我知道 Rust 的前奏中包含了一些常用的功能,但我不知道 3rd 方库可以做一些事情。我可以创建一个这样的箱子吗?
任何人都可以告诉我为什么或给我一些提示或一些参考链接?我会很感激的。