今天要講的是 Rocket
那我先簡述一下什麼是 Rocket
Rocket 是一個致力於實現 快速、簡單、彈性且安全 的 Web 框架
然後 最近有推出一個新的框架叫做 poem
他設計者的理念是要做出最簡單使用的 Rust Web 框架
有興趣可以研究看看 但是目前文獻較少
抱歉離題了
這幾天的主題是 Rocket 那麼
該如何使用呢
請先將 Rust 版本設為 nightly
指令為
$ rustup override set nightly
也可以
$ rustup default nightly
差別只在上面是更改專案的
下面則是整體環境 也就是整個系統
這次使用的版本為 0.5.0-rc.1
跟直接 cargo add rocket 出來的版本不一樣
請注意一下
#[macro_use] extern crate rocket;
#[get("/")]
fn hello() -> &'static str {
"Hello, world!"
}
#[launch]
fn rocket() -> _ {
rocket::build().mount("/", routes![hello])
}
最基礎的代碼應該要長這樣
跑起來預設應該是 127.0.0.1:8080
會輸出 Hello, world!
那麼 mount 其實不只能用一個參數
也可以塞兩個在裡面
#[launch]
fn rocket() -> _ {
rocket::build().mount("/", routes![hello, hi])
}
以此類推
但是要注意的是 不能夠有兩個同樣路徑的傳入
然後如果說要直接取 uri 的值的話
像是
#[get("/<name>")]
fn hello(name: String) -> String {
format!("Hello, {}!", name.as_str())
}
這樣就能夠取到 / 後的值
至於 format 我之前沒講過 總之就是能夠接合 String 的一個東西
然後 如果說 出現這種情況
#[get("/<num>")]
fn hello(num: i32) -> String {
format!("Your number = {}!", num)
}
然後使用者輸入其他形式就會跑到 404
如果你希望使用者能得到其他訊息就可以多加這個
#[get("/<num>", rank = 2)]
fn hello2(num: String) -> String {
format!("Error type")
}
當然 這只是舉例
用法有很多種
rank 在 Rocket 中就是一個階層
如果說今天發現現在的格式符合現在的條件 就會跳到下一個 rank 或是跑到 404 這主要可以用在登入系統的部份
講到 404
應該大部分人的 404 都是這個樣子
#[launch]
fn rocket() -> _ {
rocket::build().mount("/", routes![hello]).register("/", catchers![not_found])
}
如果這樣寫就能使用自己定義的 404 page 了這邊官方文本還是舊的
然後大部分人應該都不會直接在 .rs 檔裡面直接用 html 語法吧
這邊講一下如何引入 html 檔在路
use rocket::fs::{relative, FileServer};
#[launch]
fn rocket() -> _ {
rocket::build().mount("/", FileServer::from(relative!("static")))
}
這樣寫的話 就能夠將 static 資料夾中的檔案都引入進去
今天講的稍微有點亂了
但是主軸還是 Rocket 框架的基礎
明天講一下怎麼接收 post 跟 使用 json 格式