Operațiuni POST

Introducere în FastAPI

Matt Eckerle

Software and Data Engineering Leader

Operațiuni GET vs. POST

Operațiuni GET

  • Utilizare tradițională: solicitarea de informații despre un obiect

  • Parametrii sunt trimiși prin șirul de interogare

  • Poate fi trimis dintr-un browser web

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

Operațiuni POST

  • Utilizare tradițională: crearea unui obiect nou

  • Parametrii sunt trimiși prin șirul de interogare și corpul cererii

  • Necesită o aplicație sau un framework

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

Corpul cererii HTTP

  • Datele sunt trimise după antetul cererii HTTP
  • Antetul specifică codificarea corpului
  • Suportă structuri de date imbricate
  • JSON și XML sunt cele mai comune codificări pentru API-uri
  • JSON este codificarea implicită în FastAPI

Exemplu JSON

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

Utilizarea BaseModel din pydantic

pydantic: interfață pentru definirea schemelor corpului cererii și răspunsului

Notă

Imbricăm Review în 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
Introducere în FastAPI

Gestionarea unei operațiuni POST

Endpoint POST pentru crearea unei recenzii de film:

  • Endpoint: /reviews
  • Intrare: MovieReview (din slide-ul anterior)
  • Ieșire: db_review (definit în altă parte)
@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
Introducere în FastAPI

Să exersăm!

Introducere în FastAPI

Preparing Video For Download...