POST-bewerkingen

Introductie tot FastAPI

Matt Eckerle

Software and Data Engineering Leader

GET vs. POST-bewerkingen

GET-bewerkingen

  • Traditioneel gebruik: info over een object opvragen

  • Parameters via querystring

  • Kan vanuit een webbrowser

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

POST-bewerkingen

  • Traditioneel gebruik: een nieuw object aanmaken

  • Parameters via querystring én request body

  • Vereist een applicatie of framework

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

HTTP-request body

  • Data na de HTTP-requestheader
  • Header specificeert body-encoding
  • Ondersteunt geneste datastructuren
  • JSON en XML zijn de meest gebruikte encodings voor API's
  • JSON is de standaardencoding van FastAPI

JSON-voorbeeld

# Maak een record voor een filmreview
{"movie": "The Neverending Story",
 "review": {"num_stars": 4,
            "text": "Great movie!",
            "public": true}}
Introductie tot FastAPI

pydantic's BaseModel gebruiken

pydantic: interface om schemas voor request- en responsebody te definiëren

Let op

We nesten Review binnen 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
Introductie tot FastAPI

Een POST-bewerking afhandelen

POST-endpoint om een nieuwe filmreview te maken:

  • Endpoint: /reviews
  • Input: MovieReview (van vorige slide)
  • Output: db_review (elders gedefinieerd)
@app.post("/reviews", response_model=DbReview)
def create_review(review: MovieReview):
    # Sla de filmreview op in de database
    db_review = crud.create_review(review)
    # Retourneer de review met database-ID
    return db_review
1 https://fastapi.tiangolo.com/tutorial/sql-databases/#crud-utils
Introductie tot FastAPI

Laten we oefenen!

Introductie tot FastAPI

Preparing Video For Download...