初始版本
创建项目
执行 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"}
不错!你的服务器运作起来了。