问题标签 [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 - 我可以在 AWS Lambda 上使用 actix_web 而不为 HttpServer 生成线程吗?
我正在使用 AWS Lambda 和 Rust 构建一个 REST API。我希望 Rust 代码能够处理同一个库中的多个资源,因为这似乎比为每个资源创建单独的二进制文件更有意义。
我想做的是使用actix_web的配置和中间件选项来配置我的 REST 端点。因为我的代码在 AWS Lambda 环境中运行,所以我不需要使用HttpServer
. actix_web
代码只需要使用 from 的配置响应来自同一线程内的App
请求actix_web
。
我研究了 actix_lambda但它实际上启动了一个单独的线程,HttpServer
这似乎是不必要的资源使用。
我想编写的代码类似于:
问题:
- 是否可以以类似于上面代码显示的方式使用不带的
App
部分?actix_web
HttpServer
- 不使用
HttpServer
以避免产生线程有意义吗? - 为什么以前没有人这样做过?
- 为每个 REST 资源使用单独的二进制文件会更好吗?
- 我不应该使用
actix_web
并创建自己的路由和中间件解决方案吗? - 有没有更鲁莽的方法来解决这个问题?(我是 Rust 新手)
rust - 统一 futures::future::map::Map 和 futures::future::result_::FutureResult
我正在使用以下 actix 处理程序:
在这个函数中,我做了一些分支,有时我会返回:
其他时候我回来:
哪个无法编译
我想我明白这一点,尽管这很奇怪,.map
它不会返回另一个未来。但是我怎样才能统一这两个时间,以便我可以将它们用作返回类型?
更新:有人建议这是重复的:为什么 impl trait 不能用于返回多个/条件类型?但是那个问题并没有解决这个问题,它只是描述了为什么会发生这种情况。我看到问题出在 上impl Future
,但我无法更改它,因为我使用的是 actix-web,它需要这个签名,或者我无法找到的类似签名,因此我问这个问题。
rust - 如何配置 actix-web 以接受来自任何来源的 CORS 请求?
我正在使用 actix-web 构建一个 REST API。如何配置 CORS 以接受来自任何来源的请求?
上面的代码可以在网络上工作localhost:8081
,但不能来自0.0.0.0:8081
或127.0.0.1:8081
。我试图"*"
允许所有,但它不起作用。我如何允许所有,或者至少允许一个特定的来源,然后传递多个 URL?
rust - 如何在 actix_web FromRequest 特征实现中返回映射的未来?
我有以下 actix_webFromRequest
特征的实现:
由于返回类型是 an FnOnce
,我无法弄清楚如何实际设置返回类型。根据错误消息,它应该是FnOnce<(std::boxed::Box<(dyn db::sessions::SessionRepository + 'static)>,)>
,但是这告诉我这fnOnce
是无效的,因为它在编译时不是已知的大小。
RealSessionRepository::from_request
返回一个未来,也是该FromRequest
特征的实现。
像这样插入 FnOnce 定义:
给出以下一组错误消息:
MRE 可在:https ://github.com/zlepper/actix_web_mre 获得,因为它需要 actix,而在 rust 操场上不可用。
这特别是关于当我想要一个动态特征引用时如何处理这个问题,在一个我不拥有的关联类型中,因此不能做很多改变。更具体地说,我将如何使用 FnOnce 执行此操作,其中实际实现仅在编译时生成(我认为)。
我知道我可以稍微缩短类型定义,因此它们不是完全限定的,但是这是我想使用宏生成的东西,所以据我所知,最好使用完整类型。
有没有更好的方法来输入未来的回报?目前的定义是相当毛茸茸的..
rust - 在不同的端口上运行多个 actix 应用程序
我正在尝试运行两个应用程序(一个在端口 3006 上进行管理,另一个在端口 8080 上提供数据)。
他们共享数据库池、缓存...
对于actix 1.0,我有这个工作(我不知道这是否是最好的方法):
但是如何使它与 actix 2.0 一起工作?
rust - 如何为 actix-web HttpResponse 创建流以逐块发送文件?
我想在 Rust 中使用 actix-web 流式传输加密文件。我有一个循环使用氧化钠逐块解密加密文件。我想将块发送给客户端。
我的循环如下所示:
我找到了一个streaming
方法,它需要 aStream
作为参数。如何创建一个可以逐块添加的流?
rust - 如何将许多参数传递给 rust actix_web 路由
是否可以将多个参数传递给 axtic_web 路由?
对于带有一个参数的路由,一切都很好,但是对于这个例子,我在浏览器中只看到消息:wrong number of parameters: 2 expected 1
,并且响应状态代码是 404。
我真的需要传递更多参数(从一到三个或四个)......
rust - 如何在 Actix-Web 中为多种方法使用路由属性宏
在Actix Web Framework中,如何使用路由属性宏 ( #[http_method("route")]
) 将多个 http 方法绑定到一个函数?
例如,我有这个微不足道的端点:
我想要相同的端点处理HEAD
请求,我该怎么做?
我最初的方法是堆叠宏:
但我确实得到了一个编译错误:
我已经经历了actix-web
并且actix-web-codegen docs
没有找到任何解决这个问题的方法
rust - 在 actix 线程中执行同步 http 客户端获取
我有一个 actix 端点,我需要做一个同步的 http 客户端获取来获得一些结果,并返回一些数据。我的端点不能使用async
,所以我不能使用任何.await
方法。
我试过在我的端点中使用 reqwests 阻塞客户端,如下所示:
但它给了我错误: