Notes & software courses · Free to learn
Aph's Blog
On this page

เริ่มกับ FastAPI

👋 อ่านฟรีทั้งหมดบน Aph's Blog — เนื้อหาภาษาไทย ทำตามทีละหน้าใน sidebar ได้เลย หากมีข้อเสนอแนะหรืออยากให้เพิ่มหัวข้อไหน บอกได้เสมอ

สร้าง web API ตัวแรกด้วย FastAPI — framework สมัยใหม่ที่ใช้ type hint สร้าง validation + docs ให้

framework ช่วยจัดการเรื่อง HTTP, routing, validation ให้เรา ไม่ต้องเขียนเอง FastAPI เป็น framework Python ที่นิยมมาก จุดเด่นคือใช้ type hint (จากบท 2) สร้าง validation และเอกสาร API ให้อัตโนมัติ

ติดตั้งและ API ตัวแรก

bash
pip install fastapi uvicorn
python
# main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")             # ผูก GET / กับฟังก์ชันนี้ (decorator!)
def read_root():
    return {"message": "สวัสดี"}

@app.get("/hello/{name}")  # path parameter
def greet(name: str):
    return {"greeting": f"สวัสดี {name}"}
bash
uvicorn main:app --reload
# รันที่ http://127.0.0.1:8000
# เปิด /docs จะเห็นเอกสาร API อัตโนมัติ ลองยิงได้เลย!
@app.get คือ decorator

สังเกตว่า route ใช้ decorator (จากบท 1) ผูก URL กับฟังก์ชัน — นี่คือตัวอย่างจริงของ decorator ที่เกริ่นไว้ และ type hint name: str ทำให้ FastAPI ตรวจชนิดให้อัตโนมัติ

auto docs — ของแถมที่ทรงพลัง

FastAPI สร้างหน้า /docs (Swagger UI) ให้อัตโนมัติจากโค้ด — เห็น endpoint ทั้งหมด ลองยิง request ได้จากเบราว์เซอร์ ไม่ต้องเขียน doc เอง

path parameter

python
@app.get("/users/{user_id}")
def get_user(user_id: int):     # FastAPI แปลงเป็น int ให้ + ตรวจชนิด
    return {"user_id": user_id}

# GET /users/5    -> {"user_id": 5}
# GET /users/abc  -> error 422 อัตโนมัติ (ไม่ใช่ int)

สรุปหัวข้อนี้

  • pip install fastapi uvicorn; รันด้วย uvicorn main:app --reload
  • @app.get/post ผูก URL กับฟังก์ชัน (decorator)
  • type hint ทำให้ FastAPI ตรวจชนิด + สร้าง validation ให้
  • เปิด /docs เห็นเอกสาร API อัตโนมัติ ลองยิงได้
แบบฝึกหัด

1) สร้าง API ที่มี GET / คืนข้อความ 2) เพิ่ม endpoint /hello/{name} 3) เพิ่ม /users/{user_id} ที่รับ int แล้วลองส่ง abc ดู error 4) เปิด /docs แล้วยิง request จากเบราว์เซอร์