JSON CRUD API 구축

FastAPI 입문

Matt Eckerle

Software and Data Engineering Leader

객체 수명주기 4단계(CRUD)

데이터베이스를 중심으로 한 Create, Read, Update, Delete

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):
    # 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...