Header Parametreleri¶
🌐 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.
Query, Path ve Cookie parametrelerini nasıl tanımlıyorsanız, Header parametrelerini de aynı şekilde tanımlayabilirsiniz.
Header'ı Import Edin¶
Önce Header'ı import edin:
from typing import Annotated
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(user_agent: Annotated[str | None, Header()] = None):
return {"User-Agent": user_agent}
🤓 Other versions and variants
from typing import Annotated, Union
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(user_agent: Annotated[Union[str, None], Header()] = None):
return {"User-Agent": user_agent}
Tip
Prefer to use the Annotated version if possible.
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(user_agent: str | None = Header(default=None)):
return {"User-Agent": user_agent}
Tip
Prefer to use the Annotated version if possible.
from typing import Union
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(user_agent: Union[str, None] = Header(default=None)):
return {"User-Agent": user_agent}
Header Parametrelerini Tanımlayın¶
Ardından header parametrelerini, Path, Query ve Cookie ile kullandığınız yapının aynısıyla tanımlayın.
Default değeri ve ek validation ya da annotation parametrelerinin tamamını belirleyebilirsiniz:
from typing import Annotated
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(user_agent: Annotated[str | None, Header()] = None):
return {"User-Agent": user_agent}
🤓 Other versions and variants
from typing import Annotated, Union
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(user_agent: Annotated[Union[str, None], Header()] = None):
return {"User-Agent": user_agent}
Tip
Prefer to use the Annotated version if possible.
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(user_agent: str | None = Header(default=None)):
return {"User-Agent": user_agent}
Tip
Prefer to use the Annotated version if possible.
from typing import Union
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(user_agent: Union[str, None] = Header(default=None)):
return {"User-Agent": user_agent}
Teknik Detaylar
Header, Path, Query ve Cookie'nin "kardeş" sınıfıdır. Ayrıca aynı ortak Param sınıfından kalıtım alır.
Ancak şunu unutmayın: fastapi'den Query, Path, Header ve diğerlerini import ettiğinizde, bunlar aslında özel sınıfları döndüren fonksiyonlardır.
Bilgi
Header'ları tanımlamak için Header kullanmanız gerekir; aksi halde parametreler query parametreleri olarak yorumlanır.
Otomatik Dönüştürme¶
Header, Path, Query ve Cookie'nin sağladıklarına ek olarak küçük bir ekstra işlevsellik sunar.
Standart header'ların çoğu, "hyphen" karakteri (diğer adıyla "minus symbol" (-)) ile ayrılır.
Ancak user-agent gibi bir değişken adı Python'da geçersizdir.
Bu yüzden, default olarak Header, header'ları almak ve dokümante etmek için parametre adlarındaki underscore (_) karakterlerini hyphen (-) ile dönüştürür.
Ayrıca HTTP header'ları büyük/küçük harfe duyarlı değildir; dolayısıyla onları standart Python stiliyle (diğer adıyla "snake_case") tanımlayabilirsiniz.
Yani User_Agent gibi bir şey yazıp ilk harfleri büyütmeniz gerekmeden, Python kodunda normalde kullandığınız gibi user_agent kullanabilirsiniz.
Herhangi bir nedenle underscore'ların hyphen'lara otomatik dönüştürülmesini kapatmanız gerekirse, Header'ın convert_underscores parametresini False yapın:
from typing import Annotated
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(
strange_header: Annotated[str | None, Header(convert_underscores=False)] = None,
):
return {"strange_header": strange_header}
🤓 Other versions and variants
from typing import Annotated, Union
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(
strange_header: Annotated[
Union[str, None], Header(convert_underscores=False)
] = None,
):
return {"strange_header": strange_header}
Tip
Prefer to use the Annotated version if possible.
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(
strange_header: str | None = Header(default=None, convert_underscores=False),
):
return {"strange_header": strange_header}
Tip
Prefer to use the Annotated version if possible.
from typing import Union
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(
strange_header: Union[str, None] = Header(default=None, convert_underscores=False),
):
return {"strange_header": strange_header}
Uyarı
convert_underscores'u False yapmadan önce, bazı HTTP proxy'lerinin ve server'ların underscore içeren header'ların kullanımına izin vermediğini unutmayın.
Yinelenen Header'lar¶
Yinelenen header'lar almak mümkündür. Yani aynı header'ın birden fazla değeri olabilir.
Bu tür durumları, type tanımında bir list kullanarak belirtebilirsiniz.
Yinelenen header'daki tüm değerleri Python list olarak alırsınız.
Örneğin, birden fazla kez gelebilen X-Token header'ını tanımlamak için şöyle yazabilirsiniz:
from typing import Annotated
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(x_token: Annotated[list[str] | None, Header()] = None):
return {"X-Token values": x_token}
🤓 Other versions and variants
from typing import Annotated, Union
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(x_token: Annotated[Union[list[str], None], Header()] = None):
return {"X-Token values": x_token}
Tip
Prefer to use the Annotated version if possible.
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(x_token: list[str] | None = Header(default=None)):
return {"X-Token values": x_token}
Tip
Prefer to use the Annotated version if possible.
from typing import Union
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(x_token: Union[list[str], None] = Header(default=None)):
return {"X-Token values": x_token}
Eğer bu path operation ile iki HTTP header göndererek iletişim kurarsanız:
X-Token: foo
X-Token: bar
response şöyle olur:
{
"X-Token values": [
"bar",
"foo"
]
}
Özet¶
Header'ları Header ile tanımlayın; Query, Path ve Cookie ile kullanılan ortak kalıbı burada da kullanın.
Değişkenlerinizdeki underscore'lar konusunda endişelenmeyin, FastAPI bunları dönüştürmeyi halleder.