การจัดการข้อผิดพลาด

FastAPI เบื้องต้น

Matt Eckerle

Software and Data Leader

สาเหตุหลักสองประการในการจัดการข้อผิดพลาด

ข้อผิดพลาดจากผู้ใช้

  • URI ไม่ถูกต้องหรือล้าสมัย
  • ข้อมูลนำเข้าขาดหายหรือไม่ถูกต้อง
@app.delete("/items")
def delete_item(item: Item):
    if item.id not in item_ids:
        # Return an error
    else:
        crud.delete_item(item)
        return {}

ข้อผิดพลาดจากเซิร์ฟเวอร์

  • เกิดเหตุการณ์อื่นขึ้น
@app.delete("/items")
def delete_item(item: Item):
    try:
        crud.delete_item(item)
    except Exception:
        # Return an error
    return {}
FastAPI เบื้องต้น

HTTP Status Code: "ระดับของสัญญาณเตือน"

  • ช่วยให้ API แสดงสถานะในการตอบสนอง
    • สำเร็จ, ล้มเหลว, ข้อผิดพลาด ฯลฯ
  • กำหนดรหัสเฉพาะตามโปรโตคอล HTTP
  • ช่วง: 100 - 599
  • จำแนกตามตัวเลขแรก (1 -5)
  1. การตอบสนองเชิงข้อมูล (100 - 199)
  2. การตอบสนองสำเร็จ (200 - 299)
  3. ข้อความเปลี่ยนเส้นทาง (300 - 399)
  4. ข้อผิดพลาดจากไคลเอนต์ (400 - 499)
  5. ข้อผิดพลาดจากเซิร์ฟเวอร์ (500 - 599)
1 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
FastAPI เบื้องต้น

HTTP Status Code ที่พบบ่อย

สำเร็จ (200 - 299)

  • 200 OK
    • การตอบสนองสำเร็จโดยค่าเริ่มต้น
  • 201 Created
    • เฉพาะสำหรับ POST
  • 202 Accepted
    • ไม่ยืนยันผล — "กำลังดำเนินการ"
  • 204 No Content
    • สำเร็จ! ไม่มีข้อมูลเพิ่มเติม

การตอบสนองอื่น ๆ

  • 301 Moved Permantently
    • URI เปลี่ยนแปลงถาวร
  • 400 Bad Request
    • ข้อผิดพลาดจากไคลเอนต์
  • 404 Not Found
    • เซิร์ฟเวอร์ไม่พบทรัพยากรที่ร้องขอ
  • 500 Internal Server Error
    • เซิร์ฟเวอร์พบสถานการณ์ที่ไม่ทราบวิธีจัดการ
FastAPI เบื้องต้น

การจัดการข้อผิดพลาดด้วย Status Code

from fastapi import FastAPI, HTTPException

app = FastAPI()

@app.delete("/items")
def delete_item(item: Item):
    if item.id not in item_ids:
        # Send response with status 404 and specific error message
        raise HTTPException(status_code=404, detail="Item not found.")
    else:
        delete_item_in_database(item)
        return {}
FastAPI เบื้องต้น

มาฝึกกันเลย!

FastAPI เบื้องต้น

Preparing Video For Download...