การสร้าง JSON CRUD API

FastAPI เบื้องต้น

Matt Eckerle

Software and Data Engineering Leader

สี่ขั้นตอนใน Object Management Lifecycle (CRUD)

การสร้าง อ่าน อัปเดต และลบข้อมูลในฐานข้อมูล

การดำเนินการของ API

สร้าง (Create)

  • POST operation

อ่าน (Read)

  • GET operation

อัปเดต (Update)

  • PUT operation

ลบ (Delete)

  • DELETE operation
FastAPI เบื้องต้น

แรงจูงใจในการสร้าง JSON CRUD API

พื้นฐาน

  • จัดการวงจรชีวิตของออบเจกต์ทั้งหมด
  • เข้าใจแนวปฏิบัติที่ดีสำหรับการดำเนินการ HTTP API
  • ออกแบบ API สำหรับจัดการข้อมูลของตนเอง

โอกาส

  • ตรรกะทางธุรกิจสำหรับการดำเนินการข้อมูลที่ซับซ้อน
  • Data pipeline ที่รองรับปริมาณงานสูง
  • Pipeline การอนุมาน Machine Learning
FastAPI เบื้องต้น

การสร้างโมดูล CRUD

from pydantic import BaseModel

class Review(BaseModel):
    movie: str
    num_stars: int
    text: str

class DbReview(BaseModel):
    movie: str
    num_stars: int
    text: str
    # Reference database ID of Reviews
    review_id: int
# crud.py
def create_review(review: Review):
    # Create review in database

def read_review(review_id: int):
    # Read review from database

def update_review(review: DbReview):
    # Update review in database

def delete_review(review_id: int):
    # Delete review from database
FastAPI เบื้องต้น

POST Endpoint สำหรับการสร้าง

  • Endpoint: /reviews
  • Input: Review
  • Output: DbReview
@app.post("/reviews", response_model=DbReview)
def create_review(review: Review):
    # Create the movie review in the database
    db_review = crud.create_review(review)
    # Return the created review with database ID
    return db_review
FastAPI เบื้องต้น

GET Endpoint สำหรับการอ่าน

  • Endpoint: /reviews
  • Input: ?review_id=1234
  • Output: DbReview
@app.get("/reviews", response_model=DbReview)
def read_review(review_id: int):
    # Read the movie review from the database
    db_review = crud.read_review(review_id)
    # Return the review
    return db_review
FastAPI เบื้องต้น

PUT Endpoint สำหรับการอัปเดต

  • Endpoint: /reviews
  • Input: DbReview
  • Output: DbReview
@app.put("/reviews", response_model=DbReview)
def update_review(review: DbReview):
    # Update the movie review in the database
    db_review = crud.update_review(review)
    # Return the updated review
    return db_review
FastAPI เบื้องต้น

DELETE Endpoint สำหรับการลบ

  • Endpoint: /reviews
  • Input: DbReview
  • Output: {}
@app.delete("/reviews")
def delete_review(review: DbReview):
    # Delete the movie review from the database
    crud.delete_review(review.review_id)
    # Return nothing since the data is gone
    return {}
FastAPI เบื้องต้น

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

FastAPI เบื้องต้น

Preparing Video For Download...