0Pricing
Learn Rust Coding · บทเรียน

การกำหนดเส้นทางด้วย Axum

ตัวจัดการและเส้นทาง

การกำหนดเส้นทางด้วย Axum เป็นบทเรียน Learn Rust Coding ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn Rust Coding และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn Rust Coding มีบทเรียนทั้งหมด 4 บทเรียน

Axum คืออะไร

Axum คือเฟรมเวิร์กเว็บแบบอะซิงโครนัสที่ใช้งานสะดวกจากทีม Tokio โดยสร้างต่อยอดจาก tower และ hyper

  • ตัวจัดการคือฟังก์ชันอะซิงโครนัสธรรมดา
  • การกำหนดเส้นทางขับเคลื่อนด้วยชนิดข้อมูลและนำมาประกอบกันได้
  • ทำงานบนรันไทม์ Tokio

ตัวจัดการคือฟังก์ชัน

ตัวจัดการของ Axum คือฟังก์ชันอะซิงโครนัสที่คืนค่าซึ่งแปลงเป็นการตอบกลับได้ เช่น &str หรือ String

async fn hello() -> &'static str {
    "Hello, world!"
}

การสร้าง Router

Router จับคู่เส้นทางกับตัวจัดการ ใช้ route ร่วมกับตัวกรองเมธอด HTTP เช่น get

use axum::{Router, routing::get};

async fn hello() -> &'static str { "Hello" }

fn app() -> Router {
    Router::new().route("/", get(hello))
}

การเริ่มเซิร์ฟเวอร์

ผูกตัวรับ TCP แล้วให้บริการ Router มาโคร #[tokio::main] จะตั้งค่ารันไทม์อะซิงโครนัส

use axum::{Router, routing::get};

#[tokio::main]
async fn main() {
    let app = Router::new().route("/", get(|| async { "Hi" }));
    let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
    axum::serve(listener, app).await.unwrap();
}

หลายเส้นทาง

เรียกใช้ route ต่อกันเพื่อขึ้นทะเบียนจุดปลายทางหลายรายการบน Router เดียว

use axum::{Router, routing::get};

fn app() -> Router {
    Router::new()
        .route("/", get(|| async { "home" }))
        .route("/about", get(|| async { "about" }))
}

เมธอด HTTP ที่แตกต่างกัน

รวมตัวจัดการเมธอดหลายตัวบนเส้นทางเดียวด้วย get(...).post(...) แต่ละเมธอดจะส่งต่อไปยังตัวจัดการของตนเอง

use axum::{Router, routing::get};

fn app() -> Router {
    Router::new().route(
        "/items",
        get(|| async { "list" }).post(|| async { "create" }),
    )
}

พารามิเตอร์เส้นทาง

จับส่วนต่าง ๆ ของ URL ด้วยเซกเมนต์ {name} แล้วอ่านค่าผ่านตัวดึงข้อมูล Path

use axum::extract::Path;

async fn show(Path(id): Path<u32>) -> String {
    format!("item {}", id)
}

การสร้างแบบจำลองการกำหนดเส้นทางใน Rust ธรรมดา

โดยแก่นแล้ว การกำหนดเส้นทางคือการจับคู่เส้นทางกับการตอบกลับ แบบจำลองที่รันได้นี้แสดงแนวคิดดังกล่าวโดยไม่ใช้เฟรมเวิร์ก

fn route(path: &str) -> &str {
    match path {
        "/" => "home",
        "/about" => "about page",
        _ => "404 not found",
    }
}

fn main() {
    println!("{}", route("/"));
    println!("{}", route("/about"));
    println!("{}", route("/missing"));
}

การซ้อน Router

ประกอบแอปที่มีขนาดใหญ่ขึ้นโดยติดตั้ง Router ย่อยไว้ใต้คำนำหน้าด้วย nest

use axum::{Router, routing::get};

fn api() -> Router {
    Router::new().route("/users", get(|| async { "users" }))
}

fn app() -> Router {
    Router::new().nest("/api", api())
}

ตัวจัดการสำรอง

กำหนดสิ่งที่จะเกิดขึ้นกับเส้นทางที่ไม่ตรงกันด้วย fallback เหมาะอย่างยิ่งสำหรับหน้า 404 แบบกำหนดเอง

use axum::{Router, http::StatusCode};

async fn not_found() -> (StatusCode, &'static str) {
    (StatusCode::NOT_FOUND, "nothing here")
}

fn app() -> Router {
    Router::new().fallback(not_found)
}

การคืนรหัสสถานะ

ตัวจัดการสามารถคืนทูเพิลของ (StatusCode, body) เพื่อควบคุมสถานะการตอบกลับได้อย่างแม่นยำ

use axum::http::StatusCode;

async fn create() -> (StatusCode, &'static str) {
    (StatusCode::CREATED, "created")
}

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจเกี่ยวกับการกำหนดเส้นทางของ Axum

ทบทวน

คุณได้เรียนรู้พื้นฐานการกำหนดเส้นทางของ Axum แล้ว:

  • ตัวจัดการคือฟังก์ชันอะซิงโครนัสที่คืนการตอบกลับ
  • Router::new().route(path, get(handler)) ใช้ขึ้นทะเบียนจุดปลายทาง
  • Path จับเซกเมนต์ของ URL
  • nest, fallback และทูเพิลสถานะช่วยกำหนดรูปแบบของแอป

ถัดไป: ตัวดึงข้อมูลจะแยกวิเคราะห์คำขอขาเข้า

คำถามที่พบบ่อย

บทเรียน “การกำหนดเส้นทางด้วย Axum” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การกำหนดเส้นทางด้วย Axum” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn Rust Coding ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn Rust Coding มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การกำหนดเส้นทางด้วย Axum”

ตัวจัดการและเส้นทาง คุณปฏิบัติ Learn Rust Coding ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn Rust Coding หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn Rust Coding บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การกำหนดเส้นทางด้วย Axum” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Learn Rust Coding นี้ได้ไหม

ได้ บทเรียน Learn Rust Coding ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การกำหนดเส้นทางด้วย Axum
  2. ตัวดึงข้อมูล
  3. JSON และสถานะ
  4. มิดเดิลแวร์
← กลับไปที่ Learn Rust Coding