歡迎來到 Axum 的世界!今天,我們將一起:
為什麼要使用Axum?
想像一下,你正在學習建造房子。Axum 就像是一套現代化的建築工具 - 它安全、高效,而且設計優雅。如果你想用 Rust 開發 Web 應用,Axum 是目前最友善、最有前景的選擇之一。更棒的是,它由 Tokio 團隊官方維護,品質有保證!
Axum 是一個現代化的 Rust Web 框架,它的特色是:
Axum 核心概念圖解
瀏覽器發送請求 → Axum 接收 → Router 判斷路徑 → 呼叫對應函數 → 回傳結果
↑ ↓
└──────────────────── 顯示在瀏覽器 ←─────────────────────────┘
三個的關鍵 Axum 元素
為什麼選擇 Axum?
// 看看 Axum 的程式碼有多簡潔!
async fn hello() -> &'static str {
"Hello, World!"
}
就這麼簡單!沒有複雜的設定,一切都很直觀。
好了,讓我們開始建立專案!就像蓋房子要先打地基:
cargo new my_first_axum
cd my_first_axum
打開 Cargo.toml,來添加依賴套件。把它改成這樣:
[package]
name = "my_first_axum"
version = "0.1.0"
edition = "2024"
[dependencies]
axum = "0.8" # Axum 框架
tokio = { version = "1", features = ["full"] } # 異步運行需要
說明:
現在,打開 src/main.rs,刪除原本的內容,輸入以下程式碼:
// 導入需要的工具(Router 和 get)
use axum::{
routing::get,
Router,
};
// 告訴 Rust:這是個異步程式,請用 tokio 來執行
#[tokio::main]
async fn main() {
// 建立路由器(類似電話總機,決定請求要去哪裡)
let app = Router::new()
.route("/", get(hello)); // 當有人瀏覽 "/" 時,呼叫 hello 函數
// 設定伺服器位址
let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
println!("伺服器啟動成功!");
println!("請開啟瀏覽器連線到 http://127.0.0.1:3000");
println!("按 Ctrl+C 停止伺服器");
// 啟動伺服器
axum::serve(listener, app)
.await
.unwrap();
}
async fn hello() -> &'static str {
"Hello, World! Axum"
}
在命令提示字元輸入:
cargo run
你會看到一些編譯訊息,然後顯示:
伺服器啟動成功!
請開啟瀏覽器連線到 http://127.0.0.1:3000
按 Ctrl+C 停止伺服器
測試你的專案
恭喜!你的第一個 Axum 應用正在運行!
Q1: 為什麼端口是 3000?
只要沒有其他程式佔用,你可以改成任何你喜歡的數字(1024-65535)
// 改成 8080
let listener = tokio::net::TcpListener::bind("127.0.0.1:8080")
Q2: 127.0.0.1 是什麼?
這是 localhost ,代表只有自己才能瀏覽。
想讓其他人也能連?改成:
// 開放給所有人
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000")
其他人瀏覽 你的電腦IP:3000 ,就能看到 Hello, World! Axum
Q3: async 和 await 是什麼?
簡單說:
這讓你的程式能同時處理很多請求,不會卡住!