POST işlemleri

FastAPI'ye Giriş

Matt Eckerle

Software and Data Engineering Leader

GET ve POST İşlemleri

GET İşlemleri

  • Klasik kullanım: bir nesne hakkında bilgi isteme

  • Parametreler sorgu dizesiyle gönderilir

  • Bir web tarayıcısından gönderilebilir

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

POST İşlemleri

  • Klasik kullanım: yeni bir nesne oluşturma

  • Parametreler sorgu dizesi ve istek gövdesiyle gönderilir

  • Bir uygulama veya çerçeve gerektirir

    • ör. cURL, requests
api = "http://moviereviews.co/reviews/"
body = {"text": "A great movie!"}
response = requests.post(api, json=body)
FastAPI'ye Giriş

HTTP İstek Gövdesi

  • Veriler HTTP istek başlığından sonra gönderilir
  • Başlık gövde kodlamasını belirtir
  • İç içe veri yapıları desteklenir
  • API’ler için en yaygın kodlamalar JSON ve XML’dir
  • FastAPI varsayılanı JSON’dur

JSON Örneği

# Bir film yorumu kaydı oluştur
{"movie": "The Neverending Story",
 "review": {"num_stars": 4,
            "text": "Great movie!",
            "public": true}}
FastAPI'ye Giriş

pydantic'in BaseModel'ini Kullanma

pydantic: istek ve yanıt gövdesi şemalarını tanımlama arabirimi

Not

Review öğesini MovieReview içinde iç içe kullanıyoruz

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
FastAPI'ye Giriş

Bir POST İşlemini Yönetme

Yeni bir film yorumu oluşturmak için POST uç noktası:

  • Uç nokta: /reviews
  • Girdi: MovieReview (önceki slayttan)
  • Çıktı: db_review (başka yerde tanımlı)
@app.post("/reviews", response_model=DbReview)
def create_review(review: MovieReview):
    # Yorumu veritabanına kaydet
    db_review = crud.create_review(review)
    # Veritabanı kimliğiyle birlikte döndür
    return db_review
1 https://fastapi.tiangolo.com/tutorial/sql-databases/#crud-utils
FastAPI'ye Giriş

Hadi pratik yapalım!

FastAPI'ye Giriş

Preparing Video For Download...