Een JSON CRUD-API bouwen

Introductie tot FastAPI

Matt Eckerle

Software and Data Engineering Leader

Vier stappen in de objectlevenscyclus (CRUD)

Aanmaken, Lezen, Bijwerken en Verwijderen rond een database

API-bewerkingen

Aanmaken

  • POST-operatie

Lezen

  • GET-operatie

Bijwerken

  • PUT-operatie

Verwijderen

  • DELETE-operatie
Introductie tot FastAPI

Motivatie voor een JSON CRUD-API

Basis

  • Beheer de hele objectlevenscyclus
  • Begrijp best practices voor HTTP-API-bewerkingen
  • Ontwerp je eigen data-API's

Kansen

  • Businesslogica voor complexere databewerkingen
  • High-throughput datapijplijnen
  • Machine learning-inferencepijplijnen
Introductie tot FastAPI

Een CRUD-module bouwen

from pydantic import BaseModel

class Review(BaseModel):
    movie: str
    num_stars: int
    text: str

class DbReview(BaseModel):
    movie: str
    num_stars: int
    text: str
    # Referentie-database-ID van Reviews
    review_id: int
# crud.py
def create_review(review: Review):
    # Maak recensie aan in database

def read_review(review_id: int):
    # Lees recensie uit database

def update_review(review: DbReview):
    # Werk recensie bij in database

def delete_review(review_id: int):
    # Verwijder recensie uit database
Introductie tot FastAPI

POST-endpoint voor aanmaken

  • Endpoint: /reviews
  • Input: Review
  • Output: DbReview
@app.post("/reviews", response_model=DbReview)
def create_review(review: Review):
    # Maak de filmrecensie aan in de database
    db_review = crud.create_review(review)
    # Geef de aangemaakte recensie terug met database-ID
    return db_review
Introductie tot FastAPI

GET-endpoint voor lezen

  • Endpoint: /reviews
  • Input: ?review_id=1234
  • Output: DbReview
@app.get("/reviews", response_model=DbReview)
def read_review(review_id: int):
    # Lees de filmrecensie uit de database
    db_review = crud.read_review(review_id)
    # Geef de recensie terug
    return db_review
Introductie tot FastAPI

PUT-endpoint voor bijwerken

  • Endpoint: /reviews
  • Input: DbReview
  • Output: DbReview
@app.put("/reviews", response_model=DbReview)
def update_review(review: DbReview):
    # Werk de filmrecensie bij in de database
    db_review = crud.update_review(review)
    # Geef de bijgewerkte recensie terug
    return db_review
Introductie tot FastAPI

DELETE-endpoint voor verwijderen

  • Endpoint: /reviews
  • Input: DbReview
  • Output: {}
@app.delete("/reviews")
def delete_review(review: DbReview):
    # Verwijder de filmrecensie uit de database
    crud.delete_review(review.review_id)
    # Niets teruggeven; data is verwijderd
    return {}
Introductie tot FastAPI

Laten we oefenen!

Introductie tot FastAPI

Preparing Video For Download...