iT邦幫忙

2025 iThome 鐵人賽

DAY 8
0
Rust

Rust 後端入門系列 第 8

Day8 Axum 入門:打造第一個 Rust Web 應用

  • 分享至 

  • xImage
  •  

歡迎來到 Axum 的世界!今天,我們將一起:

  • 認識 Axum : 理解這個優雅的 Rust Web 框架
  • 建立第一個專案 : 從零開始,一步步打造 Hello World
  • 理解核心概念 : 用最簡單的方式掌握路由和處理器
  • 成功運作 : 看到你的第一個 Rust Web 服務跑起來!

為什麼要使用Axum?

想像一下,你正在學習建造房子。Axum 就像是一套現代化的建築工具 - 它安全、高效,而且設計優雅。如果你想用 Rust 開發 Web 應用,Axum 是目前最友善、最有前景的選擇之一。更棒的是,它由 Tokio 團隊官方維護,品質有保證!


Axum

Axum 是一個現代化的 Rust Web 框架,它的特色是:

  • 類型安全 : Rust 編譯器會幫你抓錯誤
  • 超高效能 : 異步處理,速度飛快
  • 設計優雅 : 程式碼簡潔易讀
  • 靈活組合 : 像樂高積木一樣組合功能

Axum 核心概念圖解

瀏覽器發送請求 → Axum 接收 → Router 判斷路徑 → 呼叫對應函數 → 回傳結果
      ↑                                                           ↓
      └──────────────────── 顯示在瀏覽器 ←─────────────────────────┘

三個的關鍵 Axum 元素

  1. Router(路由器)
    • 負責「交通指揮」
    • 決定不同的網址要執行什麼函式
  2. Handler(處理器)
    • 就是我們寫的函式(如 hello() )
    • 負責產生回傳內容
  3. Server(伺服器)
    • 在特定埠(如 3000)監聽
    • 隨時待命,等待請求

為什麼選擇 Axum?

// 看看 Axum 的程式碼有多簡潔!
async fn hello() -> &'static str {
    "Hello, World!"
}

就這麼簡單!沒有複雜的設定,一切都很直觀。


創建 Axum 專案

好了,讓我們開始建立專案!就像蓋房子要先打地基:

cargo new my_first_axum
cd my_first_axum

安裝 Axum

打開 Cargo.toml,來添加依賴套件。把它改成這樣:

[package]
name = "my_first_axum"
version = "0.1.0"
edition = "2024"

[dependencies]
axum = "0.8" # Axum 框架
tokio = { version = "1", features = ["full"] } # 異步運行需要

說明

  • axum 是我們的主角
  • tokio 是 Rust 的異步運行庫,讓程式能同時做很多事

開始編寫 Axum Hello World

現在,打開 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"
}

啟動 Axum 專案

在命令提示字元輸入:

cargo run

你會看到一些編譯訊息,然後顯示:

伺服器啟動成功!
請開啟瀏覽器連線到 http://127.0.0.1:3000
按 Ctrl+C 停止伺服器

測試你的專案

  1. 開啟瀏覽器,輸入 http://127.0.0.1:3000/
  2. 你應該會看到:Hello, World! Axum

恭喜!你的第一個 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 是什麼?

簡單說:

  • async :這個函數可能要等一下
  • await :在這裡等一下

這讓你的程式能同時處理很多請求,不會卡住!



上一篇
Day 7 用 Clap 框架完成第一個 Rust 專案:待辦事項管理器
系列文
Rust 後端入門8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言