Створення JSON CRUD API

Вступ до FastAPI

Matt Eckerle

Software and Data Engineering Leader

Чотири кроки життєвого циклу об’єкта (CRUD)

Створення, читання, оновлення й видалення навколо бази даних

Операції API

Створення

  • Операція POST

Читання

  • Операція GET

Оновлення

  • Операція PUT

Видалення

  • Операція DELETE
Вступ до FastAPI

Мотивація JSON CRUD API

Основи

  • Керувати повним життєвим циклом об’єкта
  • Розуміти кращі практики операцій HTTP API
  • Проєктувати власні API керування даними

Можливості

  • Бізнес-логіка для складніших операцій з даними
  • Високопродуктивні конвеєри даних
  • Конвеєри інференсу ML
Вступ до 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...