การตั้งค่าโปรเจกต์ FastAPI และเอนด์พอยต์แรก
ติดตั้ง FastAPI สร้างโปรเจกต์ และเขียนเอนด์พอยต์ GET แรกของคุณ
การตั้งค่าโปรเจกต์ FastAPI และเอนด์พอยต์แรก เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
FastAPI คืออะไร
FastAPI คือเว็บเฟรมเวิร์กสมัยใหม่ของ Python สำหรับสร้าง REST APIs โดยมีเอกสาร OpenAPI อัตโนมัติ โมเดลคำขอ/การตอบกลับที่ตรวจสอบชนิดข้อมูลผ่าน Pydantic และประสิทธิภาพแบบอะซิงก์โดยกำเนิด
# pip install fastapi uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
return {"message": "Hello, FastAPI"}การเรียกใช้เซิร์ฟเวอร์
เรียกใช้ด้วย uvicorn แฟล็ก --reload จะเริ่มต้นใหม่โดยอัตโนมัติเมื่อมีการเปลี่ยนแปลงโค้ดระหว่างการพัฒนา
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/health")
def health(): return {"status": "ok"}
# Terminal:
# uvicorn main:app --reload
# → http://127.0.0.1:8000
# → http://127.0.0.1:8000/docs (Swagger UI)เมธอด HTTP
ตกแต่งฟังก์ชันเส้นทางด้วย @app.get, @app.post, @app.put, @app.delete หรือ @app.patch
from fastapi import FastAPI
app = FastAPI()
@app.get("/items")
def list_items(): return []
@app.post("/items")
def create_item(): return {"id": 1}
@app.delete("/items/{item_id}")
def delete_item(item_id: int): return {"deleted": item_id}พารามิเตอร์เส้นทาง
ประกาศพารามิเตอร์เส้นทางในสตริงเส้นทางด้วย {name} และประกาศเป็นอาร์กิวเมนต์ของฟังก์ชันพร้อมคำอธิบายชนิดข้อมูล
from fastapi import FastAPI
app = FastAPI()
@app.get("/users/{user_id}")
def get_user(user_id: int):
return {"user_id": user_id, "name": "Alice"}
# GET /users/42 → {"user_id": 42, "name": "Alice"}พารามิเตอร์คำค้น
พารามิเตอร์ของฟังก์ชันที่ไม่อยู่ในเส้นทางจะกลายเป็นพารามิเตอร์คำค้น
from fastapi import FastAPI
app = FastAPI()
@app.get("/items")
def list_items(skip: int = 0, limit: int = 10, q: str | None = None):
return {"skip": skip, "limit": limit, "q": q}
# GET /items?skip=5&limit=20&q=searchเนื้อหาคำขอ Pydantic
ใช้ BaseModel ของ Pydantic เป็นชนิดของพารามิเตอร์เพื่อประกาศและตรวจสอบเนื้อหาคำขอ JSON
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
in_stock: bool = True
@app.post("/items")
def create_item(item: Item):
return {"received": item.model_dump()}ข้อผิดพลาดการตรวจสอบ Pydantic
หากเนื้อหาคำขอไม่ตรงกับสคีมา FastAPI จะส่งคืนข้อผิดพลาด 422 Unprocessable Entity พร้อมข้อความข้อผิดพลาดโดยละเอียดโดยอัตโนมัติ
# POST /items with body {"name": 123}
# → HTTP 422 Unprocessable Entity
# {
# "detail": [
# {
# "type": "string_type",
# "loc": ["body","name"],
# "msg": "Input should be a valid string"
# }
# ]
# }โมเดลการตอบกลับ
ใช้ response_model= เพื่อประกาศว่าจุดปลายทางจะส่งคืนอะไร FastAPI จะตรวจสอบการตอบกลับและกรองฟิลด์ส่วนเกินออก
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class UserOut(BaseModel):
id: int
name: str
@app.get("/users/{uid}", response_model=UserOut)
def get_user(uid: int):
return {"id": uid, "name": "Alice", "password": "secret"} # password filtered outรหัสสถานะ
กำหนดรหัสสถานะความสำเร็จเริ่มต้นด้วย status_code= นำเข้ารหัสทั่วไปจาก fastapi.status
from fastapi import FastAPI, status
app = FastAPI()
@app.post("/items", status_code=status.HTTP_201_CREATED)
def create_item():
return {"id": 1}
# HTTP 201 Created is returned on successHTTPException
ยก HTTPException เพื่อส่งคืนการตอบกลับข้อผิดพลาดพร้อมรหัสสถานะและข้อความรายละเอียดที่กำหนดเอง
from fastapi import FastAPI, HTTPException
app = FastAPI()
fake_db = {1: "Alice"}
@app.get("/users/{uid}")
def get_user(uid: int):
if uid not in fake_db:
raise HTTPException(status_code=404, detail="User not found")
return {"name": fake_db[uid]}เอกสารอัตโนมัติ
FastAPI สร้าง Swagger UI ที่ /docs และ ReDoc ที่ /redoc โดยอัตโนมัติจากคำอธิบายเส้นทางของคุณ
# After starting with uvicorn:
# http://localhost:8000/docs — Swagger UI (try the API live)
# http://localhost:8000/redoc — ReDoc (clean docs view)
# http://localhost:8000/openapi.json — raw OpenAPI schemaตรวจสอบด่วน
คุณประกาศพารามิเตอร์เนื้อหาคำขอ JSON ที่จำเป็นใน FastAPI อย่างไร
ทบทวน
เส้นทางของ FastAPI คือฟังก์ชันที่ตกแต่งไว้ โดยพารามิเตอร์เส้นทางอยู่ใน URL พารามิเตอร์คำค้นเป็นอาร์กิวเมนต์ที่ระบุชนิดข้อมูล และเนื้อหาคำขอเป็นโมเดล Pydantic ยก HTTPException สำหรับข้อผิดพลาด Swagger UI จะถูกสร้างขึ้นโดยอัตโนมัติที่ /docs
คำถามที่พบบ่อย
บทเรียน “การตั้งค่าโปรเจกต์ FastAPI และเอนด์พอยต์แรก” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การตั้งค่าโปรเจกต์ FastAPI และเอนด์พอยต์แรก” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การตั้งค่าโปรเจกต์ FastAPI และเอนด์พอยต์แรก”
ติดตั้ง FastAPI สร้างโปรเจกต์ และเขียนเอนด์พอยต์ GET แรกของคุณ คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การตั้งค่าโปรเจกต์ FastAPI และเอนด์พอยต์แรก” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม
ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การตั้งค่าโปรเจกต์ FastAPI และเอนด์พอยต์แรก
- พารามิเตอร์เส้นทาง พารามิเตอร์คำค้น และบอดีคำขอ
- การแทรกการพึ่งพาและการยืนยันตัวตน
- เอนด์พอยต์อะซิงก์และการเชื่อมต่อฐานข้อมูล