Yol Parametreleri, Sorgu Parametreleri ve İstek Gövdeleri
Pydantic ile tür belirtilmiş parametreler ve istek gövdesi şemaları tanımlayın.
Yol Parametreleri, Sorgu Parametreleri ve İstek Gövdeleri, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.
Yol Parametresi Doğrulama
Path() kullanarak yol parametrelerine doğrulayıcılar ekleyin: ge, le, gt ve lt kısıtlarını ayarlayın.
from fastapi import FastAPI, Path
app = FastAPI()
@app.get("/items/{item_id}")
def get_item(item_id: int = Path(ge=1, le=1000)):
return {"item_id": item_id}
# GET /items/0 → 422 (must be >= 1)Sorgu Parametresi Doğrulama
Sorgu parametrelerine doğrulama, varsayılan değerler, diğer adlar ve açıklamalar eklemek için Query() kullanın.
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/search")
def search(
q: str = Query(min_length=2, max_length=50),
page: int = Query(default=1, ge=1),
):
return {"q": q, "page": page}İsteğe Bağlı Sorgu Parametreleri
Bir sorgu parametresini isteğe bağlı yapmak için | None = None (Python 3.10+) veya Optional[str] = None kullanın.
from fastapi import FastAPI
app = FastAPI()
@app.get("/users")
def list_users(
dept: str | None = None,
active: bool = True
):
return {"dept": dept, "active": active}
# GET /users → dept=None, active=True
# GET /users?dept=HR&active=falseTek Sorgu Parametresi için Birden Çok Değer
Tek bir sorgu parametresi için list[str] ve Query() ile bir değer listesi kabul edin.
from fastapi import FastAPI, Query
from typing import Annotated
app = FastAPI()
@app.get("/filter")
def filter_items(tags: Annotated[list[str], Query()] = []):
return {"tags": tags}
# GET /filter?tags=python&tags=webİç İçe İstek Gövdeleri
Pydantic modelleri iç içe yerleştirilebilir. FastAPI, iç içe JSON verilerini otomatik olarak işler.
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Address(BaseModel):
street: str
city: str
class User(BaseModel):
name: str
address: Address
@app.post("/users")
def create_user(user: User):
return user.model_dump()Pydantic'te Alan Kısıtları
Tek tek alanlara kısıtlar, varsayılan değerler ve açıklamalar eklemek için model içinde Field() kullanın.
from pydantic import BaseModel, Field
class Product(BaseModel):
name: str = Field(min_length=1, max_length=100)
price: float = Field(gt=0)
quantity: int = Field(ge=0, default=0, description="Items in stock")İstek Gövdesi + Yol + Sorgu Birlikte
Üç parametre türünü de tek bir uç noktada birleştirin. FastAPI bunları konumlarına göre ayırt eder: URL'de yol, basit türlerde sorgu, modellerde gövde.
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class ItemUpdate(BaseModel):
name: str
price: float
@app.put("/shops/{shop_id}/items/{item_id}")
def update_item(
shop_id: int,
item_id: int,
item: ItemUpdate,
notify: bool = False,
):
return {"shop": shop_id, "item": item_id,
"data": item.model_dump(), "notify": notify}Dosya Yüklemeleri
Dosya yüklemelerini kabul etmek için UploadFile ve File() kullanın. İçeriğe await file.read() ile erişin.
from fastapi import FastAPI, UploadFile, File
app = FastAPI()
@app.post("/upload")
async def upload(file: UploadFile = File(...)):
content = await file.read()
return {"filename": file.filename, "size": len(content)}Form Verileri
HTML form verilerini (application/x-www-form-urlencoded veya multipart/form-data) kabul etmek için Form() kullanın.
# pip install python-multipart
from fastapi import FastAPI, Form
app = FastAPI()
@app.post("/login")
def login(username: str = Form(...), password: str = Form(...)):
return {"username": username}İstek Doğrulama Özeti
FastAPI, tüm parametre türlerini otomatik olarak doğrular. Geçersiz girdiler, işleyiciniz çağrılmadan önce ayrıntılı bir hatayla HTTP 422 döndürür.
# Auto-validated:
# - Path params: type coercion, Path() constraints
# - Query params: Query() constraints, type coercion
# - Request body: Pydantic model validation
# - All errors → HTTP 422 Unprocessable Entity
# - No manual validation neededTakma Ad ve Kullanımdan Kaldırma
İstekte farklı bir ad kabul etmek için Query() veya Field() içinde alias= kullanın; eski parametreleri işaretlemek için deprecated=True kullanın.
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/items")
def get_items(
q: str | None = Query(default=None, alias="search-query"),
old: str | None = Query(default=None, deprecated=True),
):
return {"q": q, "old": old}
# GET /items?search-query=pythonHızlı Kontrol
FastAPI, yol parametresiyle sorgu parametresini ve istek gövdesini nasıl ayırt eder?
Özet
Parametre kısıtları için Path()/Query() kullanın. Karmaşık gövdeler için Pydantic modellerini iç içe yerleştirin. Yol, sorgu ve gövde parametrelerini özgürce birleştirin. UploadFile dosyaları, Form() ise HTML formlarını işler. FastAPI, işleyiciniz çalışmadan önce her şeyi doğrular.
Sıkça Sorulan Sorular
“Yol Parametreleri, Sorgu Parametreleri ve İstek Gövdeleri” dersi ücretsiz mi?
Evet — “Yol Parametreleri, Sorgu Parametreleri ve İstek Gövdeleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.
“Yol Parametreleri, Sorgu Parametreleri ve İstek Gövdeleri” dersinde ne öğreneceğim?
Pydantic ile tür belirtilmiş parametreler ve istek gövdesi şemaları tanımlayın. Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Python Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Yol Parametreleri, Sorgu Parametreleri ve İstek Gövdeleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- FastAPI Proje Kurulumu ve İlk Uç Nokta
- Yol Parametreleri, Sorgu Parametreleri ve İstek Gövdeleri
- Bağımlılık Enjeksiyonu ve Kimlik Doğrulama
- Asenkron Uç Noktalar ve Veritabanı Entegrasyonu