Form Verisi¶
🌐 Translation by AI and humans
This translation was made by AI guided by humans. 🤝
It could have mistakes of misunderstanding the original meaning, or looking unnatural, etc. 🤖
You can improve this translation by helping us guide the AI LLM better.
JSON yerine form alanlarını almanız gerektiğinde Form kullanabilirsiniz.
Bilgi
Formları kullanmak için önce python-multipart paketini kurun.
Bir virtual environment oluşturduğunuzdan, onu etkinleştirdiğinizden emin olun ve ardından örneğin şöyle kurun:
$ pip install python-multipart
Form'u Import Edin¶
Form'u fastapi'den import edin:
from typing import Annotated
from fastapi import FastAPI, Form
app = FastAPI()
@app.post("/login/")
async def login(username: Annotated[str, Form()], password: Annotated[str, Form()]):
return {"username": username}
🤓 Other versions and variants
Tip
Prefer to use the Annotated version if possible.
from fastapi import FastAPI, Form
app = FastAPI()
@app.post("/login/")
async def login(username: str = Form(), password: str = Form()):
return {"username": username}
Form Parametrelerini Tanımlayın¶
Form parametrelerini Body veya Query için yaptığınız gibi oluşturun:
from typing import Annotated
from fastapi import FastAPI, Form
app = FastAPI()
@app.post("/login/")
async def login(username: Annotated[str, Form()], password: Annotated[str, Form()]):
return {"username": username}
🤓 Other versions and variants
Tip
Prefer to use the Annotated version if possible.
from fastapi import FastAPI, Form
app = FastAPI()
@app.post("/login/")
async def login(username: str = Form(), password: str = Form()):
return {"username": username}
Örneğin OAuth2 spesifikasyonunun kullanılabileceği ("password flow" olarak adlandırılan) yollardan birinde, form alanları olarak bir username ve password göndermek zorunludur.
spec, alanların adının tam olarak username ve password olmasını ve JSON değil form alanları olarak gönderilmesini gerektirir.
Form ile Body (ve Query, Path, Cookie) ile yaptığınız aynı konfigürasyonları tanımlayabilirsiniz; validasyon, örnekler, alias (örn. username yerine user-name) vb. dahil.
Bilgi
Form, doğrudan Body'den miras alan bir sınıftır.
İpucu
Form gövdelerini tanımlamak için Form'u açıkça kullanmanız gerekir; çünkü bunu yapmazsanız parametreler query parametreleri veya body (JSON) parametreleri olarak yorumlanır.
"Form Alanları" Hakkında¶
HTML formlarının (<form></form>) verileri sunucuya gönderme şekli normalde bu veri için JSON'dan farklı "özel" bir encoding kullanır.
FastAPI bu veriyi JSON yerine doğru yerden okuyacaktır.
Teknik Detaylar
Formlardan gelen veri normalde "media type" application/x-www-form-urlencoded kullanılarak encode edilir.
Ancak form dosyalar içerdiğinde multipart/form-data olarak encode edilir. Dosyaları ele almayı bir sonraki bölümde okuyacaksınız.
Bu encoding'ler ve form alanları hakkında daha fazla okumak isterseniz, MDN web docs for POST sayfasına gidin.
Uyarı
Bir path operation içinde birden fazla Form parametresi tanımlayabilirsiniz, ancak JSON olarak almayı beklediğiniz Body alanlarını da ayrıca tanımlayamazsınız; çünkü bu durumda request'in body'si application/json yerine application/x-www-form-urlencoded ile encode edilmiş olur.
Bu FastAPI'ın bir kısıtlaması değildir, HTTP protokolünün bir parçasıdır.
Özet¶
Form verisi girdi parametrelerini tanımlamak için Form kullanın.