Ana içeriğe geç

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.

English version

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.