พารามิเตอร์เส้นทาง พารามิเตอร์คำค้น และบอดีคำขอ
กำหนดพารามิเตอร์ที่มีชนิดข้อมูลและสคีมาบอดีคำขอด้วย Pydantic
พารามิเตอร์เส้นทาง พารามิเตอร์คำค้น และบอดีคำขอ เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
การตรวจสอบพารามิเตอร์เส้นทาง
เพิ่มตัวตรวจสอบให้พารามิเตอร์เส้นทางด้วย Path() โดยกำหนดข้อจำกัด ge, le, gt, lt
from fastapi import FastAPI, Path
app = FastAPI()
@app.get("/items/{item_id}")
def get_item(item_id: int = Path(ge=1, le=1000)):
return {"item_id": item_id}
# GET /items/0 → 422 (must be >= 1)การตรวจสอบพารามิเตอร์คำค้น
ใช้ Query() เพื่อเพิ่มการตรวจสอบ ค่าเริ่มต้น นามแฝง และคำอธิบายให้กับพารามิเตอร์คำค้น
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/search")
def search(
q: str = Query(min_length=2, max_length=50),
page: int = Query(default=1, ge=1),
):
return {"q": q, "page": page}พารามิเตอร์คำค้นที่ไม่บังคับ
ใช้ | None = None (Python 3.10 ขึ้นไป) หรือ Optional[str] = None เพื่อทำให้พารามิเตอร์คำค้นไม่บังคับ
from fastapi import FastAPI
app = FastAPI()
@app.get("/users")
def list_users(
dept: str | None = None,
active: bool = True
):
return {"dept": dept, "active": active}
# GET /users → dept=None, active=True
# GET /users?dept=HR&active=falseค่าหลายค่าของพารามิเตอร์คำค้นหนึ่งรายการ
รับค่าหลายค่าสำหรับพารามิเตอร์คำค้นรายการเดียวด้วย list[str] และ Query()
from fastapi import FastAPI, Query
from typing import Annotated
app = FastAPI()
@app.get("/filter")
def filter_items(tags: Annotated[list[str], Query()] = []):
return {"tags": tags}
# GET /filter?tags=python&tags=webเนื้อหาคำขอแบบซ้อน
โมเดล Pydantic สามารถซ้อนกันได้ FastAPI จัดการ JSON แบบซ้อนโดยอัตโนมัติ
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Address(BaseModel):
street: str
city: str
class User(BaseModel):
name: str
address: Address
@app.post("/users")
def create_user(user: User):
return user.model_dump()ข้อจำกัดฟิลด์ใน Pydantic
ใช้ Field() ภายในโมเดลเพื่อเพิ่มข้อจำกัด ค่าเริ่มต้น และคำอธิบายให้กับแต่ละฟิลด์
from pydantic import BaseModel, Field
class Product(BaseModel):
name: str = Field(min_length=1, max_length=100)
price: float = Field(gt=0)
quantity: int = Field(ge=0, default=0, description="Items in stock")เนื้อหาคำขอ + เส้นทาง + คำค้นร่วมกัน
ผสมพารามิเตอร์ทั้งสามประเภทในจุดปลายทางเดียวกันได้ FastAPI แยกประเภทตามตำแหน่ง ได้แก่ เส้นทางอยู่ใน URL ชนิดข้อมูลพื้นฐานเป็นคำค้น และโมเดลเป็นเนื้อหาคำขอ
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class ItemUpdate(BaseModel):
name: str
price: float
@app.put("/shops/{shop_id}/items/{item_id}")
def update_item(
shop_id: int,
item_id: int,
item: ItemUpdate,
notify: bool = False,
):
return {"shop": shop_id, "item": item_id,
"data": item.model_dump(), "notify": notify}การอัปโหลดไฟล์
ใช้ UploadFile และ File() เพื่อรับไฟล์ที่อัปโหลด เข้าถึงเนื้อหาด้วย await file.read()
from fastapi import FastAPI, UploadFile, File
app = FastAPI()
@app.post("/upload")
async def upload(file: UploadFile = File(...)):
content = await file.read()
return {"filename": file.filename, "size": len(content)}ข้อมูลฟอร์ม
ใช้ Form() เพื่อรับข้อมูลฟอร์ม HTML (application/x-www-form-urlencoded หรือ multipart/form-data)
# pip install python-multipart
from fastapi import FastAPI, Form
app = FastAPI()
@app.post("/login")
def login(username: str = Form(...), password: str = Form(...)):
return {"username": username}สรุปการตรวจสอบคำขอ
FastAPI ตรวจสอบชนิดพารามิเตอร์ทั้งหมดโดยอัตโนมัติ ข้อมูลนำเข้าที่ไม่ถูกต้องจะส่งคืน HTTP 422 พร้อมข้อผิดพลาดโดยละเอียดก่อนเรียกตัวจัดการของคุณ
# Auto-validated:
# - Path params: type coercion, Path() constraints
# - Query params: Query() constraints, type coercion
# - Request body: Pydantic model validation
# - All errors → HTTP 422 Unprocessable Entity
# - No manual validation neededนามแฝงและการเลิกใช้งาน
ใช้ alias= ใน Query() หรือ Field() เพื่อรับชื่ออื่นในคำขอ และใช้ deprecated=True เพื่อทำเครื่องหมายพารามิเตอร์เก่า
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/items")
def get_items(
q: str | None = Query(default=None, alias="search-query"),
old: str | None = Query(default=None, deprecated=True),
):
return {"q": q, "old": old}
# GET /items?search-query=pythonตรวจสอบด่วน
FastAPI แยกความแตกต่างระหว่างพารามิเตอร์เส้นทาง พารามิเตอร์คำค้น และเนื้อหาคำขออย่างไร
ทบทวน
ใช้ Path()/Query() สำหรับกำหนดข้อจำกัดพารามิเตอร์ ซ้อนโมเดล Pydantic สำหรับเนื้อหาคำขอที่ซับซ้อน ผสมพารามิเตอร์เส้นทาง คำค้น และเนื้อหาคำขอได้อย่างอิสระ UploadFile จัดการไฟล์ ส่วน Form() จัดการฟอร์ม HTML FastAPI จะตรวจสอบทุกอย่างก่อนเรียกใช้ตัวจัดการของคุณ
คำถามที่พบบ่อย
บทเรียน “พารามิเตอร์เส้นทาง พารามิเตอร์คำค้น และบอดีคำขอ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “พารามิเตอร์เส้นทาง พารามิเตอร์คำค้น และบอดีคำขอ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “พารามิเตอร์เส้นทาง พารามิเตอร์คำค้น และบอดีคำขอ”
กำหนดพารามิเตอร์ที่มีชนิดข้อมูลและสคีมาบอดีคำขอด้วย Pydantic คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “พารามิเตอร์เส้นทาง พารามิเตอร์คำค้น และบอดีคำขอ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม
ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การตั้งค่าโปรเจกต์ FastAPI และเอนด์พอยต์แรก
- พารามิเตอร์เส้นทาง พารามิเตอร์คำค้น และบอดีคำขอ
- การแทรกการพึ่งพาและการยืนยันตัวตน
- เอนด์พอยต์อะซิงก์และการเชื่อมต่อฐานข้อมูล