» Rust:使用Rocket构建REST API » 2. 开发 » 2.1 初始版本

初始版本

创建项目

执行 cargo new 命令:

cargo new lr_rest_books_rust --bin

指定 --bin 参数用于制作二进制程序;如果制作库,可指定 --lib 参数。

或者,在已有目录里创建一个二进制 Cargo 项目:

cargo init

该命令会创建一系列初始文件,包括 Cargo.toml 文件,其主要用于追踪管理项目依赖。

添加 Rocket 框架

执行 cargo add

cargo add rocket

或者,添加 Rocket 框架到 Cargo.toml:

@@ -6,3 +6,4 @@ edition = "2021"
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 
 [dependencies]
+rocket = "0.5.0"

更新 src/main.rs:

#[macro_use]
extern crate rocket;

use rocket::response::content;

#[get("/ping")]
fn ping() -> content::RawJson<&'static str> {
    content::RawJson("{\"message\": \"pong\"}")
}

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

如下运行程序:

cargo run

将得到类似如下信息:

🔧 Configured for debug.
   >> address: 127.0.0.1
   >> port: 8000
   >> workers: 12
   >> max blocking threads: 512
   >> ident: Rocket
   >> IP header: X-Real-IP
   >> limits: bytes = 8KiB, data-form = 2MiB, file = 1MiB, form = 32KiB, json = 1MiB, msgpack = 1MiB, string = 8KiB
   >> temp dir: /var/folders/wx/hdjympxj7h3_ntwgzbhddyr40000gn/T/
   >> http/2: true
   >> keep-alive: 5s
   >> tls: disabled
   >> shutdown: ctrlc = true, force = true, signals = [SIGTERM], grace = 2s, mercy = 3s
   >> log level: normal
   >> cli colors: true
📬 Routes:
   >> (ping) GET /ping
📡 Fairings:
   >> Shield (liftoff, response, singleton)
🛡️ Shield:
   >> Permissions-Policy: interest-cohort=()
   >> X-Content-Type-Options: nosniff
   >> X-Frame-Options: SAMEORIGIN
🚀 Rocket has launched from http://127.0.0.1:8000

你的 API 服务器已经在 8000 端口跑起来了。

尝试使用 curl 命令测试 /ping 端点:

curl http://localhost:8000/ping

结果显示:

{"message": "pong"}

不错!你的服务器运作起来了。