İstek ve yanıt modelleri

FastAPI ile Üretime AI Dağıtımı

Matt Eckerle

Software and Data Engineering Leader

API'lerde istek ve yanıt yapıları

İstek yapısı
  • İstemciden API'ye gönderilen veriler
  • Genelde şunları içerir:
    • HTTP yöntemi (GET, POST, vb.)
    • Başlıklar
    • Sorgu parametreleri
    • İstek gövdesi

http://localhost:8000/users/? [email protected]

  • :8000: Port numarası. FastAPI varsayılan olarak 8000 kullanır.
  • /users/: Eriştiğimiz belirli uç noktanın yolu.
  • ?: Sorgu parametrelerinin başladığını belirtir.
  • `[email protected]`: Sorgu parametresi. Burada uç noktaya bir e‑posta gönderiyoruz.
FastAPI ile Üretime AI Dağıtımı

Yanıt yapısı

  • API'nin istemciye geri gönderdiği veriler
    • Kullanıcı bilgileri içeren JSON yanıt yükü
  • Genelde şunları içerir:
    • Durum kodu (200 OK, 404 Not Found, vb.)
    • Başlıklar
    • Yanıt gövdesi (istenen veri veya işlem sonucu)
HTTP/1.1 200 OK
date: Fri, 18 Oct 2024 12:34:56 GMT
server: uvicorn
content-length: 76
content-type: application/json

{
  "username": "johndoe",
  "email": "[email protected]",
  "age": 30
}
FastAPI ile Üretime AI Dağıtımı

Pydantic modeli

  • User oluşturma
  • Pydantic kullanımı
from pydantic import BaseModel
class User(BaseModel):
    username: str
    email: str
    age: int
  • BaseModel'den kalıtım alır
  • Tür ipuçlarıyla öznitelikleri tanımlar
  • Türlere göre otomatik doğrulama
FastAPI ile Üretime AI Dağıtımı

Doğrulama hatası

from pydantic import ValidationError
try:
    invalid_user = User(username="john_doe", email="[email protected]", 
                        age="thirty")
    print("Invalid User:", invalid_user)
except ValidationError as e:
    print("Validation Error:", e)
Validation Error: 1 validation error for User age
Input should be a valid integer, unable to parse string as an integer 
[type=int_parsing, input_value='thirty', input_type=str]
FastAPI ile Üretime AI Dağıtımı

FastAPI'de Pydantic modellerini kullanma

from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()

class User(BaseModel): username: str email: str age: int
@app.post("/users", response_model=User)
async def create_user(user: User): return user
  • Model response_model olarak kullanılır
  • Model parametre tür ipucu olarak kullanılır
  • Otomatik istek doğrulama
  • İstek/yanıtın serileştirilmesi/tersi
  • API dokümanları üretir
FastAPI ile Üretime AI Dağıtımı

İstek ve yanıt biçimleri

curl -X 'POST' \
  'http://localhost:8000/users/' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "username": "john_doe",
  "email": "[email protected]",
  "age": 30
  }'

 

{
  "username": "john_doe",
  "email": "[email protected]",
  "age": 30
}
FastAPI ile Üretime AI Dağıtımı

Hadi pratik yapalım!

FastAPI ile Üretime AI Dağıtımı

Preparing Video For Download...