JSON CRUD API の構築

FastAPI入門

Matt Eckerle

Software and Data Engineering Leader

オブジェクト管理ライフサイクルの4段階(CRUD)

データベースを中心とした Create、Read、Update、Delete

API の操作

Create

  • POST 操作

Read

  • GET 操作

Update

  • PUT 操作

Delete

  • DELETE 操作
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...