Operace POST

Úvod do FastAPI

Matt Eckerle

Software and Data Engineering Leader

GET vs. POST

Operace GET

  • Tradiční použití: vyžádat si informace o objektu

  • Parametry posílány přes query string

  • Lze odeslat z webového prohlížeče

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

Operace POST

  • Tradiční použití: vytvořit nový objekt

  • Parametry posílány přes query string i v těle požadavku

  • Vyžaduje aplikaci nebo framework

    • např. cURL, requests
api = "http://moviereviews.co/reviews/"
body = {"text": "A great movie!"}
response = requests.post(api, json=body)
Úvod do FastAPI

Tělo HTTP požadavku

  • Data posílána za HTTP hlavičkou
  • Hlavička určuje kódování těla
  • Podpora vnořených struktur
  • V API nejčastěji JSON a XML
  • Výchozí kódování ve FastAPI je JSON

Příklad JSONu

# Vytvoření záznamu filmové recenze
{"movie": "The Neverending Story",
 "review": {"num_stars": 4,
            "text": "Great movie!",
            "public": true}}
Úvod do FastAPI

Použití BaseModelu z pydanticu

pydantic: rozhraní pro definici schémat těla požadavků a odpovědí

Poznámka

Review vnoříme do 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
Úvod do FastAPI

Zpracování operace POST

POST endpoint pro vytvoření nové filmové recenze:

  • Endpoint: /reviews
  • Vstup: MovieReview (z předchozího slidu)
  • Výstup: db_review (definováno jinde)
@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
Úvod do FastAPI

Lass uns üben!

Úvod do FastAPI

Preparing Video For Download...