建立 JSON CRUD API

FastAPI 入門

Matt Eckerle

Software and Data Engineering Leader

物件生命週期的四步驟(CRUD)

資料庫周邊的建立、讀取、更新、刪除

API 操作

建立

  • POST operation

讀取

  • GET operation

更新

  • PUT operation

刪除

  • DELETE operation
FastAPI 入門

為何使用 JSON CRUD API

基礎重點

  • 管理完整的物件生命週期
  • 理解 HTTP API 操作的最佳實務
  • 設計自己的資料管理 API

應用機會

  • 更複雜資料操作的商業邏輯
  • 高吞吐量資料管線
  • 機器學習推論管線
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 建立

  • 端點:/reviews
  • 輸入:Review
  • 輸出: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 讀取

  • 端點:/reviews
  • 輸入:?review_id=1234
  • 輸出: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 更新

  • 端點:/reviews
  • 輸入:DbReview
  • 輸出: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 刪除

  • 端點:/reviews
  • 輸入:DbReview
  • 輸出:{}
@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...