Validasi input di FastAPI

Menerapkan AI ke Produksi dengan FastAPI

Matt Eckerle

Software and Data Engineering Leader

Memvalidasi data input

Bagan alur yang menunjukkan prediksi ML dengan FastAPI

Menerapkan AI ke Produksi dengan FastAPI

Mengapa memvalidasi input?

 

  • Validasi untuk integritas data
  • Mencegah error di aplikasi
  • Terintegrasi dengan Pydantic
  • Menyediakan alat kuat untuk validasi data

 

Logo Pydantic

Menerapkan AI ke Produksi dengan FastAPI

Pydantic untuk fungsi pradefinisi

Validasi field menggunakan pydantic

Menerapkan AI ke Produksi dengan FastAPI

Validasi kustom dengan pydantic

Validasi kustom menggunakan pydantic

Menerapkan AI ke Produksi dengan FastAPI

Pelaporan error yang baik

Pelaporan error saat validasi

Menerapkan AI ke Produksi dengan FastAPI

Validator field Pydantic

  • Endpoint pendaftaran pengguna

  • Memvalidasi nama pengguna yang dimasukkan:

from pydantic import BaseModel, Field
class User(BaseModel):
    username: str = Field(..., min_length=3, max_length=50)
Menerapkan AI ke Produksi dengan FastAPI

Menambahkan validator kustom

class User(BaseModel):
    username: str = Field(..., 
                          min_length=3, 
                          max_length=50)
    age: int

@field_validator('age') def age_criteria(cls, age): if age < 13: raise ValueError('User must be at least 13') return age
Menerapkan AI ke Produksi dengan FastAPI

Validator kustom dalam praktik

Permintaan valid:

{"username": "john_doe", "age": 25}
Pengguna valid: username='john_doe' age=25

Permintaan tidak valid:

{"username": "too_young", "age": 10}
Kesalahan validasi untuk {'username': 'too_young', 'age': 10}: User must be at least 13
Menerapkan AI ke Produksi dengan FastAPI

Menggabungkan semuanya

Pelaporan error saat validasi

  • Validator field untuk username
  • Validator kustom untuk age
  • Pesan error jika validasi gagal
Menerapkan AI ke Produksi dengan FastAPI

Menggabungkan semuanya

@app.post("/users")
def create_user(user: User):
    return {"message": "User created",
            "user": user.model_dump()}

Output:

{
  "message": "User created successfully",
    "user": {
          "username": "john_doe", 
           "age": 25
    }
}
Menerapkan AI ke Produksi dengan FastAPI

Ayo berlatih!

Menerapkan AI ke Produksi dengan FastAPI

Preparing Video For Download...