Opérations POST

Introduction à FastAPI

Matt Eckerle

Software and Data Engineering Leader

Opérations GET vs POST

Opérations GET

  • Usage courant : demander des infos sur un objet

  • Paramètres envoyés dans la chaîne de requête

  • Peut être envoyé depuis un navigateur Web

api = "http://moviereviews.co/reviews/1"
response = requests.get(api)

Opérations POST

  • Usage courant : créer un nouvel objet

  • Paramètres dans la chaîne de requête et dans le corps

  • Nécessite une application ou un cadre de dév.

    • p. ex. cURL, requests
api = "http://moviereviews.co/reviews/"
body = {"text": "A great movie!"}
response = requests.post(api, json=body)
Introduction à FastAPI

Corps d’une requête HTTP

  • Données envoyées après l’en-tête HTTP
  • L’en-tête précise le codage du corps
  • Prend en charge les structures imbriquées
  • JSON et XML sont les encodages d’API les plus courants
  • JSON est l’encodage par défaut de FastAPI

Exemple JSON

# Create a record for a movie review
{"movie": "The Neverending Story",
 "review": {"num_stars": 4,
            "text": "Great movie!",
            "public": true}}
Introduction à FastAPI

Utiliser BaseModel de pydantic

pydantic : interface pour définir les schémas des corps de requête et de réponse

Remarque

Nous imbriquons Review dans MovieReview

from pydantic import BaseModel

class Review(BaseModel):
    num_stars: int
    text: str
    public: bool = False

class MovieReview(BaseModel):
    movie: str
    # Nest Review in MovieReview
    review: Review
Introduction à FastAPI

Traiter une opération POST

Point de terminaison POST pour créer une critique de film :

  • Point de terminaison : /reviews
  • Entrée : MovieReview (diapo précédente)
  • Sortie : db_review (défini ailleurs)
@app.post("/reviews", response_model=DbReview)
def create_review(review: MovieReview):
    # Persist the movie review to the database
    db_review = crud.create_review(review)
    # Return the review including database ID
    return db_review
1 https://fastapi.tiangolo.com/tutorial/sql-databases/#crud-utils
Introduction à FastAPI

Passons à la pratique !

Introduction à FastAPI

Preparing Video For Download...