问题标签 [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.
database - 在 Rocket 中处理主/从数据库配置
Rocket 提供了一种使用 guards 注入数据库池的方法,但我想要一个主/从结构:1 个主用于写入,4 个从属用于读取,随机选择从属。
我想我的路线功能看起来像
我有 5 个具有主/从配置的此类数据库,因此大约有 25 个连接池。将所有这些连接指定为处理程序中的守卫似乎很冗长。
有没有更好的方法来保留这些连接池并在我的应用程序中安全地使用它?
rust - 如何修复 Cargo 文件中不匹配的依赖项以解决本机库冲突?
我正在使用Rocket设置 Rust 服务器,并尝试将它与JWT library一起使用。他们使用不同版本的 *ring* crate,我在以下过程中遇到错误cargo build
:
我的货物.toml
我读到您应该修复 Cargo 文件中不匹配的依赖项,但我不知道该怎么做。
windows - 来自环境变量的 Rocket 端口覆盖在 Windows 中不起作用
我正在尝试运行 Rocket-rs 应用程序,同时使用文档中描述的环境变量覆盖端口配置。
我已经设置了变量ROCKET_PORT
:
我检查过它是用echo
. 当我运行应用程序(使用cargo run
或./application.exe
)时,它仍然使用端口 8000:
我知道可以在 中配置端口Rocket.toml
,但想法是通过设置环境变量,能够为每个控制台会话在不同的端口中运行。
为什么这不起作用?
routing - 有没有办法创建一个仅包含路由及其在 Rocket 中的功能的中央路由文件?
查看示例代码,它们都在处理它们的函数之上定义了路由。对于一个更大的项目,这似乎不会扩展。
有没有办法创建一个中央路由文件,它只包含路由和它们的功能,类似于 Rails 中的 routes.rb?
这是来自 GitLab Rails 应用程序的路由文件部分的示例:
这使您可以轻松查看应用程序中存在哪些路由,而无需查看整个项目。
javascript - 从 React 应用程序向 Rocket 后端发送 POST 请求时出错
尝试从单页应用程序发出 POST 请求时出现 404 错误,即使该路由在 Postman 中有效。
路线.rs
我已将 main.rs 设置为允许 CORS
所有路由都在 Postman 中工作,GET 请求在我的应用程序中工作。但是,当我尝试从我的应用程序发出 POST 请求时,我在前端收到一个 404 并从我的后端记录以下内容:
这是我的前端供参考:
我如何实施 Axios 或 Rocket_cors 有问题吗?我发现了一个类似的问题,但我似乎正确配置了它。
rust - Rocket Framework 示例无法编译
我尝试每晚安装 Rust 并编译 Rocket 的 hello_world 示例项目。我收到了这个错误:
我搜索了这个错误,但没有解释如何修复该错误的线程或文章。
这些是我的依赖项:
我正在使用生锈rust version 1.28.0-nightly (cbc4c8380 2018-06-22)
docker - 什么会导致带有 Rocket 应用程序的 Docker 映像在不同的 Docker 主机上运行时使用非常不同的内存?
我有一个 Rocket Web 应用程序打包到一个 Docker 映像中。该应用程序在我们的 Kubernetes 环境(一些 Linux Docker 主机)中部署和运行时,启动时使用的内存比它作为 Mac 笔记本电脑 Docker 主机上的容器运行时的内存使用量多 4 或 5 倍。
什么可能导致这种内存差异?
本地(作为在我的 Mac 笔记本电脑 docker 中运行的容器):
在 Linux docker 主机上(或在 kubernetes 上):
可以看到RES
进程的价值backend
比运行在 Kubernetes 上高很多
我已经仔细检查了图像版本是否完全相同。
rust - 编译器说数据不能在线程之间安全地共享,即使数据包装在互斥锁中
我正在使用 Rocket State
,它传递给 HTTP 请求。这个结构包含一个Mutex<DatastoreInstance>
可以访问 SQLite 数据库并被互斥锁锁定以确保读写安全的结构。
当DatastoreInstance
结构看起来像这样时,只有一个 SQLite 连接一切正常,但我还想在这个结构中添加一个事务对象:
这没有编译,因为Transaction
对象需要引用一个Connection
应该具有它知道的生命周期的对象。我正在使用的 rusqlite 中的Connection
and对象定义如下:Transaction
为了解决生命周期问题,我必须添加这些生命周期参数才能使其正常工作:
这是结果,应该根据我对生命周期和互斥锁的理解工作,但现在我得到一个编译器错误告诉我:
根据我对互斥体的理解,这段代码应该是有效的,因为整个DatastoreInstance
结构都被包裹在一个Mutex
应该保证一次只有一个线程引用这个对象的情况下。
我错过了什么?
为什么编译器在 a 内引用而不是仅在 a内引用RefCell
后发现不再安全?Connection
Transaction
Connection
我对互斥锁的工作原理有不好的理解吗?我的生命周期是否无效并以某种方式破坏了读/写安全?将Connection
andTransaction
放在同一个结构中的设计是否会破坏读/写安全性?我是否需要以某种方式重新设计我的数据结构以确保安全?还是我只是错过了一些非常明显的东西?