Header Parametreleri¶
🌐 Yapay Zekâ ve İnsanlar Tarafından Çeviri
Bu çeviri, insanlar tarafından yönlendirilen bir yapay zekâ ile oluşturuldu. 🤝
Orijinal anlamın yanlış anlaşılması ya da kulağa doğal gelmeme gibi hatalar içerebilir. 🤖
Yapay zekâ LLM'ini daha iyi yönlendirmemize yardımcı olarak bu çeviriyi iyileştirebilirsiniz.
Query,Path veCookie parametrelerini nasıl tanımlıyorsanız, Header parametrelerini de aynı şekilde tanımlayabilirsiniz.
Header'ı Import Edin¶
ÖnceHeader'ı import edin:
fromtypingimportAnnotatedfromfastapiimportFastAPI,Headerapp=FastAPI()@app.get("/items/")asyncdefread_items(user_agent:Annotated[str|None,Header()]=None):return{"User-Agent":user_agent}🤓 Other versions and variants
Tip
Prefer to use theAnnotated version if possible.
fromfastapiimportFastAPI,Headerapp=FastAPI()@app.get("/items/")asyncdefread_items(user_agent:str|None=Header(default=None)):return{"User-Agent":user_agent}Header Parametrelerini Tanımlayın¶
Ardından header parametrelerini,Path,Query veCookie 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:
fromtypingimportAnnotatedfromfastapiimportFastAPI,Headerapp=FastAPI()@app.get("/items/")asyncdefread_items(user_agent:Annotated[str|None,Header()]=None):return{"User-Agent":user_agent}🤓 Other versions and variants
Tip
Prefer to use theAnnotated version if possible.
fromfastapiimportFastAPI,Headerapp=FastAPI()@app.get("/items/")asyncdefread_items(user_agent:str|None=Header(default=None)):return{"User-Agent":user_agent}Teknik Detaylar
Header,Path,Query veCookie'nin "kardeş" sınıfıdır. Ayrıca aynı ortakParam sınıfından kalıtım alır.
Ancak şunu unutmayın:fastapi'denQuery,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çinHeader kullanmanız gerekir; aksi halde parametreler query parametreleri olarak yorumlanır.
Otomatik Dönüştürme¶
Header,Path,Query veCookie'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.
Ancakuser-agent gibi bir değişken adı Python'da geçersizdir.
Bu yüzden, default olarakHeader, 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.
YaniUser_Agent gibi bir şey yazıp ilk harfleri büyütmeniz gerekmeden, Python kodunda normalde kullandığınız gibiuser_agent kullanabilirsiniz.
Herhangi bir nedenle underscore'ların hyphen'lara otomatik dönüştürülmesini kapatmanız gerekirse,Header'ınconvert_underscores parametresiniFalse yapın:
fromtypingimportAnnotatedfromfastapiimportFastAPI,Headerapp=FastAPI()@app.get("/items/")asyncdefread_items(strange_header:Annotated[str|None,Header(convert_underscores=False)]=None,):return{"strange_header":strange_header}🤓 Other versions and variants
Tip
Prefer to use theAnnotated version if possible.
fromfastapiimportFastAPI,Headerapp=FastAPI()@app.get("/items/")asyncdefread_items(strange_header:str|None=Header(default=None,convert_underscores=False),):return{"strange_header":strange_header}Uyarı
convert_underscores'uFalse 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 Pythonlist olarak alırsınız.
Örneğin, birden fazla kez gelebilenX-Token header'ını tanımlamak için şöyle yazabilirsiniz:
fromtypingimportAnnotatedfromfastapiimportFastAPI,Headerapp=FastAPI()@app.get("/items/")asyncdefread_items(x_token:Annotated[list[str]|None,Header()]=None):return{"X-Token values":x_token}🤓 Other versions and variants
Tip
Prefer to use theAnnotated version if possible.
fromfastapiimportFastAPI,Headerapp=FastAPI()@app.get("/items/")asyncdefread_items(x_token:list[str]|None=Header(default=None)):return{"X-Token values":x_token}Eğer bupath operation ile iki HTTP header göndererek iletişim kurarsanız:
X-Token: fooX-Token: barresponse şöyle olur:
{"X-Token values":["bar","foo"]}Özet¶
Header'larıHeader ile tanımlayın;Query,Path veCookie 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.







