构建 JSON CRUD API

FastAPI 入门

Matt Eckerle

Software and Data Engineering Leader

对象全生命周期的四步(CRUD)

在数据库周围的创建、读取、更新和删除

API 操作

创建

  • POST 操作

读取

  • GET 操作

更新

  • PUT 操作

删除

  • 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):
    # 在数据库中创建影评
    db_review = crud.create_review(review)
    # 返回带数据库 ID 的新影评
    return db_review
FastAPI 入门

GET:读取端点

  • 端点:/reviews
  • 输入:?review_id=1234
  • 输出:DbReview
@app.get("/reviews", response_model=DbReview)
def read_review(review_id: int):
    # 从数据库读取影评
    db_review = crud.read_review(review_id)
    # 返回该影评
    return db_review
FastAPI 入门

PUT:更新端点

  • 端点:/reviews
  • 输入:DbReview
  • 输出:DbReview
@app.put("/reviews", response_model=DbReview)
def update_review(review: DbReview):
    # 在数据库中更新影评
    db_review = crud.update_review(review)
    # 返回更新后的影评
    return db_review
FastAPI 入门

DELETE:删除端点

  • 端点:/reviews
  • 输入:DbReview
  • 输出:{}
@app.delete("/reviews")
def delete_review(review: DbReview):
    # 在数据库中删除影评
    crud.delete_review(review.review_id)
    # 数据已删除,返回空
    return {}
FastAPI 入门

让我们来练习!

FastAPI 入门

Preparing Video For Download...