问题标签 [actix-web]
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 中为多种方法使用路由属性宏
在Actix Web Framework中,如何使用路由属性宏 ( #[http_method("route")]
) 将多个 http 方法绑定到一个函数?
例如,我有这个微不足道的端点:
我想要相同的端点处理HEAD
请求,我该怎么做?
我最初的方法是堆叠宏:
但我确实得到了一个编译错误:
我已经经历了actix-web
并且actix-web-codegen docs
没有找到任何解决这个问题的方法
rust - 如何在 actix-web 中使用 tokio_postgres
所以我想在 actix API 中使用 tokio_postgres,我刚开始,在我的获取请求中共享客户端时遇到了困难。这是我的代码:
我将此代码基于此,但它似乎不起作用。
我也想保持“纯粹”,所以如果可能的话,我不想拥有一个全球客户。甚至可以做我想做的事吗?
rust - actix_web 中间件 ErrorHandlers 在 ServiceResponse 中返回错误消息
我正在尝试捕获对我的服务器发出的请求可能发生的错误。
当我在我的一个 POST 请求中收到 400(甚至在到达我的请求处理程序方法之前抛出)并且在启用调试日志后我没有收到关于问题的反馈时,出现了这个问题我看到了问题
现在,我希望能够捕获该错误,以便可以将其发送回 400 响应的正文中。
我开始了
并且handle_bad_request
我能够修改响应正文以包含新信息
理想情况下,我想要做的是接受错误ServiceResponse
并将其发送回响应中。我可以通过这样做来阅读错误
但至于实际采取该错误并将其发送回响应中,我无法弄清楚。
postgresql - 不能使用 UUID 作为主键:Uuid:diesel::Expression is not满足
我想将 UUID 字段作为 Postgres 表中的主字段,但出现以下错误:
一些较老的问题是关于柴油的 UUID,但没有一个是可插入的,我特别得到了错误。我正在使用带有 actix web 的柴油。
这是我的模型:
还有我的表模式
我发现一些旧帖子表明该字段可能可以为空,但id
在PRIMARY KEY
我的 up.sql 表中,所以它不能为空。
该表是从diesel-cli 生成的,那里似乎没有任何问题。
这是我的 Cargo.toml
rust - 在 actix 线程中执行同步 http 客户端获取
我有一个 actix 端点,我需要做一个同步的 http 客户端获取来获得一些结果,并返回一些数据。我的端点不能使用async
,所以我不能使用任何.await
方法。
我试过在我的端点中使用 reqwests 阻塞客户端,如下所示:
但它给了我错误:
rust - 使用带有生命周期参数的应用程序状态会导致 rust 编译器中的生命周期问题
我已将应用程序状态定义为具有生命周期参数,如下所示:
并按预期将其传递给actix服务器,代码如下:
当我尝试访问存储在路由中的应用程序状态中的数据库时,请参见下文:
我收到以下错误:
我一直在戳戳这个问题,尝试不同的生命周期,指定一个人应该比另一个人活得更长,等等都无济于事。我想我缺少对为什么会发生此错误消息的具体理解。我的思考过程是客户端和数据库都是在函数内部借用的,所以我很困惑为什么当函数结束时它们被删除应该是一个问题。
我会注意到我的代码(比这个例子大)在我向应用程序状态引入生命周期参数之前都运行良好,所以我假设我只是没有提供编译器之前没有提供的一些生命周期参数。
我希望当前的示例足以至少对出了什么问题有所了解。
任何帮助将不胜感激,我对 rust/actix 还很陌生,并且努力让这个(看起来应该是相当常见和简单的用例)工作。
json - 使用 actix_web 对部分结构进行 Serde 反序列化
我有一个 API 端点,actix_web
用于反序列化传入的 JSON 有效负载(actix_web
最终serde
用于 JSON 反序列化)。
例如,我有一些看起来像这样的东西:
serde
目前,只有能够反序列化结构的所有字段,此端点才会成功返回。即一个请求必须包含field1
和field2
键。
例如,这将是成功的:
但这不会(因为field2
有效载荷中缺少):
所以我的问题是,这可以做到吗?可以将带有键值字段子集的 JSON 有效负载发送到actix_web
期望所有字段都存在的端点吗?
或者更确切地说,是否有一种通用的方法可以用actix_web
or反序列化像这样的部分结构serde
?
multithreading - 在 Rust 中协调队列和线程?
我正在尝试在 Rust 中实现以下流程:
- 条目 (JSON) 被提交给 Actix Web 侦听器并进行处理
- 条目被提交到“可观察队列”
- 通知 Actix Web 客户端
- 客户端将其发送(通过 HTTP)到后端。这可能会失败
- 如果失败,如果提交失败少于 10 次,则将条目交给“计时器”
- 30 秒后,计时器将条目重新提交到队列中,并且流程在 3 处恢复
我使用vert.x和 Java(GitHub 项目)解决了这个问题,并希望将其用作学习 Rust 的示例项目。
更新:
找到了actix 文档并实现了 Actix::Actor,它涵盖了 1->4
这大大缩小了我的问题:
- 如何构建延迟计时器?
- 当我在我的
main()
方法中启动演员时,它也使用let c_store = CommentStore::start(CommentStore {});
我在c_store
. 但是,我需要在指定为 Route 目标的异步函数之一中发送给参与者。我如何最好地移交地址。全局变量似乎不是答案。
当前主要功能
非常感谢帮助