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 → 拥有自己的项目。

相关推荐
梦未3 小时前
Spring控制反转与依赖注入
java·后端·spring
无限大63 小时前
验证码对抗史
后端
用户2190326527354 小时前
Java后端必须的Docker 部署 Redis 集群完整指南
linux·后端
VX:Fegn08954 小时前
计算机毕业设计|基于springboot + vue音乐管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
bcbnb4 小时前
苹果手机iOS应用管理全指南与隐藏功能详解
后端
用户47949283569154 小时前
面试官:DNS 解析过程你能说清吗?DNS 解析全流程深度剖析
前端·后端·面试
幌才_loong4 小时前
.NET8 实时通信秘籍:WebSocket 全双工通信 + 分布式推送,代码实操全解析
后端·.net
开心猴爷4 小时前
iOS应用发布:App Store上架完整步骤与销售范围管理
后端
JSON_L4 小时前
Fastadmin API接口实现多语言提示语
后端·php·fastadmin