Rocket 0.5 快速上手3 分钟跑起第一个 Rust Web 服务

一、前置条件:先把 Rust 环境装好

Rocket 是一个 Rust Web 框架,所以第一步当然是:安装 Rust 工具链

官方推荐使用 rustup 管理 Rust 版本,它的优势是:

  • 支持 stable / beta / nightly 多通道切换
  • 可以按项目目录覆盖版本(对 Rocket 很实用)
  • 升级、卸载都很简单

如果你还没装 Rust,可以简单理解流程:

  1. 打开 rustup 官网,按提示执行安装命令;

  2. 安装完成后,在终端里执行:

    bash 复制代码
    rustc --version
    cargo --version

    如果两个命令都能正常输出版本号,说明环境 OK。

如果你完全没接触过 Rust,建议先稍微看几眼《The Rust Programming Language》(俗称 Rust Book),再用 Rocket 会更顺畅。

二、最快体验 Rocket:直接跑官方例子

Rocket 提供了一套非常完善的 examples 示例工程 ,几乎覆盖了常见场景:

比如 Hello World、JSON API、文件服务、表单、WebSocket 等。

最简单的上手方式是:把整个 Rocket 仓库拉下来,然后进 examples 跑 demo

2.1 克隆 Rocket 仓库

在终端执行:

bash 复制代码
git clone https://github.com/rwf2/Rocket
cd Rocket

接着切到 0.5 版本的 tag(保证文档与代码一致):

bash 复制代码
git checkout v0.5

为什么建议切到 v0.5 ?

因为你现在看的文档、升级指南都是基于 0.5 的,如果直接在 master 上,可能会遇到还没稳定的新改动,和文档不匹配。

2.2 运行 hello 示例

Rocket 的示例都放在 examples/ 目录下,先从最经典的 hello 开始:

bash 复制代码
cd examples/hello
cargo run

如果一切顺利,你会看到类似输出(省略部分):

text 复制代码
🚀 Rocket has launched from http://127.0.0.1:8000

这时候浏览器打开 http://127.0.0.1:8000,就能看到第一个 Rocket Web 服务的响应了。

小技巧:

所有 examples 目录下的示例,都可以通过 cargo run 启动:

  • examples/json
  • examples/forms
  • examples/chat(实时聊天)
  • examples/websocket(如果有的话,取决于你当前 tag)
    可以按需一个个玩过去,感受一下 Rocket 0.5 的能力边界。

2.3 为什么官方推荐"先跑 examples"

原因很简单:门槛最低、反馈最快

  • 不用自己写 Cargo.toml、不需要纠结依赖版本;
  • 不需要一开始就理解 Rocket 的所有概念;
  • 先跑起来,再逐步从 "能跑" → "能改" → "能写自己的"。

而且 examples 里的 Cargo.toml 已经帮你配置好了:

  • 依赖指向本地 rocket 源码(path dependency);
  • 已经包含了对应示例需要的 feature(比如 json、templates 等)。

接下来要做的,就是把这些示例变成你自己的项目

三、从官方示例"复制"出自己的 Rocket 项目

当你对某个示例比较满意时,通常有两种做法:

  1. 在 Rocket 仓库里直接改(不推荐,难以与官方更新解耦)
  2. 把示例代码 copy 到你自己的项目目录,然后调整 Cargo.toml(推荐)

3.1 新建一个自己的项目目录

比如你想写一个自己的 Rocket 服务叫 my-rocket-app

bash 复制代码
cargo new my-rocket-app --bin
cd my-rocket-app

这会生成一个标准的 Rust 二进制项目结构:

text 复制代码
my-rocket-app
├── Cargo.toml
└── src
    └── main.rs

3.2 修改 Cargo.toml:依赖 Rocket 0.5

Cargo.toml 改成类似这样(根据需求添加 features):

toml 复制代码
[package]
name = "my-rocket-app"
version = "0.1.0"
edition = "2021"

[dependencies]
rocket = { version = "0.5.1", features = ["json", "secrets"] }
# 如果你需要模板:
# rocket_dyn_templates = { version = "0.2.0", features = ["tera"] }
# 如果你需要数据库池:
# rocket_sync_db_pools = "0.1.0"

注意两点:

  1. 这里的 rocket 不再是指向本地源码,而是正常从 crates.io 拉取;
  2. 你需要手动补上之前示例中依赖的功能(比如 json / secrets / 模板等)。

3.3 复制示例代码到自己的 main.rs

比如你喜欢 examples/hello/src/main.rs 中的写法,就可以直接 copy 内容到自己的 src/main.rs,然后稍作修改,变成你自己的版本。

一个最迷你的 Rocket 0.5 main.rs 大致像这样:

rust 复制代码
#[macro_use] extern crate rocket;

#[get("/")]
fn index() -> &'static str {
    "Hello, Rocket 0.5!"
}

#[launch]
fn rocket() -> _ {
    rocket::build()
        .mount("/", routes![index])
}

然后在你自己的项目目录下执行:

bash 复制代码
cargo run

如果能正常启动、返回了你期望的内容,说明你已经从"跑官方 demo"成功迈进到"有自己项目"这一步

四、常见疑问:示例的 Cargo.toml 和我自己的有什么区别?

看 examples 目录时你可能会发现:

示例里的 Cargo.toml 不是直接写 rocket = "0.5.1",而是用本地路径依赖,比如:

toml 复制代码
[dependencies]
rocket = { path = "../../core/lib", features = ["json"] }

这是因为:

  • examples 需要在 Rocket 仓库内部直接编译、调试;
  • 官方开发者会在本地反复修改 Rocket 源码并及时验证示例是否还能跑通;
  • 为了保证一致性,示例直接依赖仓库内的源码,而不是 crates.io 上的版本。

而你建自己的项目时,不应该继续用 path 依赖,而是像正常 Rust 项目一样指定版本号,这样:

  • 构建、部署过程更标准;
  • 不用带着整个 Rocket 仓库一起走;
  • 升级 Rocket 时只需要改 Cargo.toml 即可。

五、总结:Quickstart 的"推荐路线图"

可以把 Rocket 0.5 的快速上手路线总结成 4 步:

  1. 装 Rust 工具链(rustup)

  2. 克隆 Rocket 仓库并切到 v0.5

    bash 复制代码
    git clone https://github.com/rwf2/Rocket
    cd Rocket
    git checkout v0.5
  3. 进 examples 跑 demo

    bash 复制代码
    cd examples/hello
    cargo run
  4. 新建自己的项目,用示例代码做模板

    • cargo new my-rocket-app --bin
    • 调整 Cargo.toml 依赖 rocket = { version = "0.5.1", features = [...] }
    • 把示例里你喜欢的 main / routes 复制过来改一改

做到这里,你已经完成了 Rocket 的"冷启动":

从零 → 跑 demo → 拥有自己的项目。

相关推荐
Source.Liu41 分钟前
【学写LibreCAD】Rust Vector2D 实现与 C++ RS_Vector 的对应关系及优势分析
c++·rust·cad
YIN_O41 分钟前
openEuler 上 CUDA 与 ROCm 的 GPU 加速实战
前端
hefaxiang1 小时前
分支和循环(中)
c语言·开发语言
爱装代码的小瓶子1 小时前
【c++知识铺子】最后一块拼图-多态
java·开发语言·c++
认真敲代码的小火龙1 小时前
【JAVA项目】基于JAVA的超市订单管理系统
java·开发语言·课程设计
CryptoRzz1 小时前
对接墨西哥股票市场 k线图表数据klinechart 数据源API
开发语言·javascript·web3·ecmascript
古城小栈1 小时前
前端安全进阶:有效防止页面被调试、数据泄露
前端·安全·状态模式
yue0081 小时前
C# 实现电脑锁屏功能
开发语言·c#·电脑·电脑锁屏
chilavert3181 小时前
技术演进中的开发沉思-230 Ajax:Prototype.js 重构原生 DOM
开发语言·前端·javascript