Construindo uma API JSON CRUD

Introdução ao FastAPI

Matt Eckerle

Software and Data Engineering Leader

Quatro etapas do ciclo de vida de objetos (CRUD)

Criar, Ler, Atualizar e Excluir em um banco de dados

Operações de API

Create

  • Operação POST

Read

  • Operação GET

Update

  • Operação PUT

Delete

  • Operação DELETE
Introdução ao FastAPI

Motivação para API JSON CRUD

Fundamentos

  • Gerenciar todo o ciclo de vida do objeto
  • Entender boas práticas para operações HTTP API
  • Projetar nossas próprias APIs de gestão de dados

Oportunidades

  • Lógica de negócio para operações de dados complexas
  • Pipelines de dados de alta vazão
  • Pipelines de inferência de Machine Learning
Introdução ao FastAPI

Construindo um módulo 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
Introdução ao FastAPI

Endpoint POST para criar

  • Endpoint: /reviews
  • Entrada: Review
  • Saída: 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
Introdução ao FastAPI

Endpoint GET para ler

  • Endpoint: /reviews
  • Entrada: ?review_id=1234
  • Saída: 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
Introdução ao FastAPI

Endpoint PUT para atualizar

  • Endpoint: /reviews
  • Entrada: DbReview
  • Saída: 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
Introdução ao FastAPI

Endpoint DELETE para excluir

  • Endpoint: /reviews
  • Entrada: DbReview
  • Saída: {}
@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 {}
Introdução ao FastAPI

Vamos praticar!

Introdução ao FastAPI

Preparing Video For Download...