Создание 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):
    # 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...