PUT- och DELETE-operationer

Introduktion till FastAPI

Matt Eckerle

Software and Data Engineering Leader

PUT vs. DELETE

PUT-operationer

  • Traditionell användning: uppdatera ett befintligt objekt

  • Parametrar skickas via query string och request body

  • Kräver ett program eller ramverk

    • t.ex. cURL, requests
api = "http://moviereviews.co/reviews/1"
body = {"text": "A fantastic movie!"}
response = requests.put(api, json=body)

DELETE-operationer

  • Traditionell användning: ta bort ett befintligt objekt

  • Parametrar skickas via query string och request body

  • Kräver ett program eller ramverk

    • t.ex. cURL, requests
api = "http://moviereviews.co/reviews/1"
response = requests.delete(api)
Introduktion till FastAPI

Referera till befintliga objekt

  • Inget ORM – appen måste mappa objekt till ID
  • Databas-ID – unik identifierare
  • Konventionen _id för databas-ID:n
    • review_id: Tabell reviews, kolumn id
    • Samma konvention i ramverk med ORM
from pydantic import BaseModel

class DbReview(BaseModel):
    movie: str
    num_stars: int
    text: str
    # Reference database ID of Reviews
    review_id: int
Introduktion till FastAPI

Hantera en PUT-operation

PUT-endpoint för att uppdatera en befintlig filmrecension:

  • Endpoint: /reviews
  • Indata: DbReview (från föregående bild)
  • Utdata: 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
Introduktion till FastAPI

Hantera en DELETE-operation

DELETE-endpoint för att ta bort en befintlig filmrecension:

  • Endpoint: /reviews
  • Indata: DbReview
  • Utdata: {}
@app.delete("/reviews")
def delete_review(review: DbReview):
    # Delete the movie review from the database
    crud.delete_review(review)
    # Return nothing since the data is gone
    return {}
Introduktion till FastAPI

Låt oss öva!

Introduktion till FastAPI

Preparing Video For Download...