问题标签 [rust-rocket]

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 投票
2 回答
513 浏览

rust - Rocket 内的车把助手

我正在尝试为车把注册一个助手,最终目标是能够拥有一个计算/打印长度的助手Vec。但是我已经无法将文档中的示例放入我的程序中。我设法做了一个“最小”示例,显示与我的火箭页面相同的错误。

具有以下依赖项cargo.toml

错误:

0 投票
1 回答
2561 浏览

rest - Rust + Rocket:我如何从请求中读取 POST 正文作为字符串?

我正在使用 Rust 和 Rocket 构建一个简单的 REST API。其中一个端点接受 POST 方法请求,并从请求正文中读取一个大字符串。我不知道如何用 Rocket 做到这一点。

该文档描述了如何从 POST 请求的正文中读取 JSON 对象,以及如何读取多部分表单数据,而不是原始字符串。有谁知道如何做到这一点?


更新:

按照下面 Dave 的回答中的建议,我实现了 FromDataSimple 特征来尝试解析请求正文。这是我已经实现的,但它只导致得到“404 Not Found”响应:

不幸的是,当我运行它然后使用以下请求 ping 它时,我只收到 404 Not Found 响应:-(


更新 2:

实际上这确实有效,我只是忘记了将方法安装到路由处理程序中:

0 投票
1 回答
56 浏览

rust - 如何修复未使用的生命周期?

在尝试在 Rocket 中创建一个简单的网络服务器时,我遇到了我想要重定向发送 html 数据的问题,具体取决于以下某些条件:

这显然不起作用,Html并且Redirect显然是不同的类型。然后我尝试创建一个具有不同响应者类型的枚举,这样我就可以在同一个函数中使用不同的响应者类型,这导致了以下代码:

然而,这也不起作用,因为现在 Rust 编译器抱怨生命周期'r在 struct 中未使用TwoResponders。我认为情况并非如此,因为它用于定义 T 和 V 需要具有的特征,但是 Rust 编译器的想法不同,并且它一如既往地拥有最终决定权。

我正在考虑添加一个PhantomData似乎是一个非常丑陋的解决方案,但据我所知,这不应该如此困难。

有没有更好的方法来解决这个问题?

0 投票
1 回答
319 浏览

postgresql - 带有 Rocket 和 Diesel 的多租户 Web 应用程序

我有一个多租户 Web 应用程序,可能需要支持数十个租户(公司)。我一直在寻找一种方法来确保租户只能访问他们自己的数据(重要的是没有泄漏),而不必传递tenant_id给每个表单和 SQL 查询。我的想法是创建一个可更新的视图,以便用户的查询只能在其公司数据的范围内操作。

我通过创建一个视图(postgres)来做到这一点:

这将创建一个可更新的视图,该视图只允许查询该公司的数据,而无需指定其tenant_id.

在 Diesel 中,我已经编写了表格!视图的宏,因此 Diesel 将它们视为表格。在 Rocket 中,我将我的数据库连接 Request Guard 包装在另一个 Request Guard 中,它首先发送一个 SQL 查询来设置my.tenant_id用户的tenant_id

然后,用户可以使用请求保护进行数据库查询,并且只能访问他们公司的数据。租户特定的可更新视图。

但我担心这可能会导致竞争状况。我不清楚 postgres 会话变量如何与 Diesel 和 Rocket 一起使用。假设来自两个不同公司的用户同时向 Rocket 提交请求,并且用户 A 的会话变量设置为他们的租户 ID,但在他们的交易之前,用户 B 将会话变量设置为他们的租户 ID,导致两个数据库请求都写入用户 B 的租户 ID。任何人都可以阐明这是否会成为问题?或者是否有更直接的方式来处理多租户应用程序?

0 投票
0 回答
327 浏览

rust - Rust/Rocket:当用户发出 HTTP 请求时,我如何返回多个页面/文档?

当用户发出单个 HTTP 请求时,我试图在 HTTP 响应中返回多个文档 ( index.html, )。style.css我该怎么做呢?我正在考虑使用类似std::io::File实例的东西来返回这些,但到目前为止还没有成功。

下面的函数和路径是用户第一次访问网站时与之交互的。

我已经阅读了 Rocket 的文档NamedFileStaticFiles但我不太确定这些是这种情况下的正确解决方案。

0 投票
1 回答
1834 浏览

rust - 如何使用rocket_contrib Json?

我是 Rust 和 Rocket 的初学者。我试图通过阅读官方存储库中的示例来了解 Rocket。所以有一个例子叫content_type,里面有这样的描述// NOTE: In a real application, we'd use `rocket_contrib::json::Json`.

所以我尝试将 Json 与 Rocket_contrib 一起使用。该示例的代码如下所示。

另外,我转换的代码如下所示。

我已阅读文档并补充说我需要#[derive(Debug, Serialize, Deserialize)]Person,但它不起作用。有什么问题?

错误如下所示。

0 投票
1 回答
1044 浏览

rust - 将日志与 Rocket 一起使用时,在此范围内找不到宏“日志”

我在尝试使用工作区包中的日志箱时遇到编译器错误。工作区中的其他 crate 使用日志记录没有问题。

货物.toml:

lib.rs:

错误信息:

我已经使用了该use log语句的几种变体以及如何调用info!宏,但它们都会导致相同的错误消息。我尝试在 Cargo.toml 中指定确切的版本。

我难住了。这正是我在其他箱子中使用登录的方式。

0 投票
2 回答
2079 浏览

rust - 如何从 Rust (Rocket) HTTP 端点返回 JSON?

在 Rust 中通过 Rocket 返回 Json 的最简单方法是什么?

我试过了:content::Json()但这对我来说似乎太静态了。

0 投票
1 回答
165 浏览

reactjs - 使用代理时使用 Rocket 后端的 React 应用程序给出 ECONNREFUSED

我正在尝试使用 Rocket 为后端制作一个 Web 应用程序,并为前端做出反应。但是,当我尝试制作代理时,我不断得到rayk@pop-os:~/repos/homrs/frontend$ curl http://localhost:3000/api Proxy error: Could not proxy request /api from localhost:3000 to http://localhost:8000 (ECONNREFUSED).

我目前尝试的事情是"proxy": "http://localhost:8000"在应用程序中添加到我的 package.json 中,我一直尝试按照此处的建议手动配置代理https://create-react-app.dev/docs/proxying-api-requests-开发中/#configuring-the-proxy-manually

这是我用来测试的后端代码:

这是setupProxy.js我尝试使用的

我也尝试过使用http://localhost:8000and http://localhost:8000/。我还尝试将火箭端口从 8000 更改为 3001,但也没有用。

编辑:这是 github 存储库的链接:https ://github.com/GimpFlamingo/homrs

0 投票
2 回答
341 浏览

rust - Rust/rocket 将变量传递给端点

不是我的偏好,但我今天不得不写一些 Rust,所以我试图创建一个只有一个端点的 Rocket 实例,但是在那个端点上我需要访问一个在 main.js 期间创建的变量。该变量需要很长时间才能被实例化,所以这就是我在那里这样做的原因。

我的问题是我找不到安全通过它的方法。无论我做什么,即使库似乎是线程安全的,编译器也会抱怨线程安全:https ://github.com/brave/adblock-rust/pull/130 (在我的本地实例上找到了提交的代码)

这是我得到的错误:

...这是我的代码:

有什么方法eng可以在sink端点方法中使用?