问题标签 [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 回答
185 浏览

rust - 如何在 actix 中创建应用程序/json HTTPResponse?

example 部分中,他们使用:

但是我不喜欢硬编码,content-type因为有一个很好的表明我可以使用枚举作为json响应:

问题是我也想设置响应的正文。我怎样才能在builder上面做到这一点?

谢谢。

0 投票
3 回答
7883 浏览

rust - 如何在 actix-web 中解析查询字符串?

如何使用actix-web从以下 URL解析name和参数?color

我想我的路径应该是/path/to/page,然后当我尝试查询时,name我收到一个空字符串(req.match_info().query("name")where req: &HttpRequest)。

我找到的唯一文档是关于匹配名称的(例如,如果路径是/people/{page}/匹配的/people/123/page = 123但这不是我想要的。

0 投票
0 回答
237 浏览

rust - 如何构建具有状态和工厂的 Actix Web TestServer?

actix-web 文档中,有两个关于如何TestServer使用工厂函数构建 a 的示例:

或应用程序状态

我想建立一个TestServer状态使用工厂功能,但到目前为止还没有成功。

如何实现?

0 投票
1 回答
3758 浏览

stream - 我怎样才能在 Rust 中“flatmap”流?

我有一个rusoto_core::ByteStream实现期货Stream特征的方法:

我想将它传递给actix_web 的HttpResponseBuilder::streaming方法。

当我尝试这样做时,我收到以下错误:

我相信原因是streaming()期望 a S: Stream<Item = Bytes, Error>(ie, Item = Bytes) 但我ByteStreamItem = Vec<u8>. 我该如何解决?

我认为解决方案以某种方式解决了flatmap我的问题,ByteStream但我找不到这样的流方法。

这是一个如何使用的示例streaming()

0 投票
0 回答
337 浏览

rust - 如何在 actix-web 中将不可变对象注入到服务代码中?

我正在使用actix 框架来构建一个服务器,该服务器应该支持向给定的用户显示年龄/平衡的机会user_id

这段代码有效,但我担心我必须为每个低效且可读的传入请求创建一个客户端(并打开一个通道),我认为制作一个单例是个好主意(因为我可以重用它)。我查看了示例文件夹,发现todo 示例与我正在做的有点相似。所以我找到了以下两个选项来注入我的client对象(在我创建它的单个实例之后main()

  1. 将其置于应用状态
  2. 将其作为中间件 ( 1 , 2 ) 注入?

什么是最好的/正确的实施?

我想过只是将一个客户端对象作为参数传递给每个处理程序,但我没有设法让它工作(而且看起来并不好)。

0 投票
1 回答
258 浏览

rust-actix - Rust Actix:为 System::current() 获取 SystemRunner

有没有办法SystemRunner从当前System(我从中得到System::current())获取对象。我无法通过文档找到一种方法,但我觉得它应该存在。

我有一个端点,用户可能会调用一个使用的方法block_on,这需要一个实例SystemRunner来运行。我想避免System::new("actix")再次调用,只使用System当前正在运行的。

0 投票
1 回答
2237 浏览

rust - 如何在 Actix-Web 中打印错误消息而不会惊慌?

我试图从 Actix 存储库中的一个示例中了解错误处理。它使用failurecrate 来处理错误。这是一段相关的代码:

如果我的处理程序返回 a ServiceError,代码不会恐慌,它将呈现一个HttpResponse(请参阅 参考资料error_response())。因此,我将无法在终端中看到Fail消息(#[fail(display...)。

println!除了添加到之外,还有什么好的内置方法可以在我的日志中显示它error_response?我相信显示确切的错误而不是通用的完全有意义InternalServerError:即NetworkError/ParseError

如果不是,那么设计它的原因是什么而无法看到确切的错误?

0 投票
1 回答
1380 浏览

rust - 在运行多个系统的情况下关闭 actix

我的应用程序基于一个使用 actix 和 actix-web 的库 (Library-A)。我正在添加第二个运行 http 服务器的库 (Library-B),也使用 actix-web。我为此使用了一个单独的线程actix::system。在 SIGINT 上,只有 Library-B actix 系统关闭,而 Library-A 仍在运行。没有后续的 SIGINT 关闭正在运行的 actix 系统。

优雅关闭两个正在运行的 actix 系统的正确方法是什么?

Library-B 的代码,用于启动一个新的 actix 系统并运行一个 http 服务器:

我为独立图书馆启动新系统是否正确?如何优雅地关闭?

0 投票
1 回答
1843 浏览

rust - 如何在使用 actix-web 代理流式传输大文件时防止超时问题?

我想使用actix-web作为一个简单的代理服务器,但是当我在流模式下使用大文件时,服务器出现超时错误,只会下载文件的一小部分。

我真的很困惑,因为这是来自 actix-web 示例的示例代码!

依赖项:

此代码记录一个错误:

下载的数据没有正确的内容长度和文件名:

示例图片

0 投票
0 回答
391 浏览

rust - 无法理解 E0277

我无法理解为什么会遇到错误 E0277。我有以下代码:

当我尝试编译时,出现以下错误:

我不明白为什么在这种情况下diesel::Queryable需要实施。Option<User>如果我将消息的结果类型切换为,Result<User, Error>那么问题就会消失