Cookie Parametre Modelleri¶
🌐 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.
Birbirleriyle ilişkili bircookie grubunuz varsa, bunları tanımlamak için birPydantic model oluşturabilirsiniz. 🍪
Bu sayedemodel'i yeniden kullanabilir,birden fazla yerde tekrar tekrar kullanabilir ve tüm parametreler için validation ve metadata'yı tek seferde tanımlayabilirsiniz. 😎
Not
This is supported since FastAPI version0.115.0. 🤓
İpucu
Aynı teknikQuery,Cookie veHeader için de geçerlidir. 😎
Pydantic Model ile Cookies¶
İhtiyacınız olancookie parametrelerini birPydantic model içinde tanımlayın ve ardından parametreyiCookie olarak bildirin:
fromtypingimportAnnotatedfromfastapiimportCookie,FastAPIfrompydanticimportBaseModelapp=FastAPI()classCookies(BaseModel):session_id:strfatebook_tracker:str|None=Nonegoogall_tracker:str|None=None@app.get("/items/")asyncdefread_items(cookies:Annotated[Cookies,Cookie()]):returncookies🤓 Other versions and variants
Tip
Prefer to use theAnnotated version if possible.
fromfastapiimportCookie,FastAPIfrompydanticimportBaseModelapp=FastAPI()classCookies(BaseModel):session_id:strfatebook_tracker:str|None=Nonegoogall_tracker:str|None=None@app.get("/items/")asyncdefread_items(cookies:Cookies=Cookie()):returncookiesFastAPI, request ile gelencookies içindenher bir field için veriyiextract eder ve size tanımladığınız Pydantic model'i verir.
Dokümanları Kontrol Edin¶
Tanımlanan cookie'leri/docs altındaki docs UI'da görebilirsiniz:

Bilgi
Tarayıcıların cookie'leri özel biçimlerde ve arka planda yönetmesi nedeniyle,JavaScript'in cookie'lere erişmesine kolayca izin vermediğini aklınızda bulundurun.
/docs altındakiAPI docs UI'a giderseniz,path operation'larınız için cookie'lerindokümantasyonunu görebilirsiniz.
Ancak verileridoldurup "Execute" düğmesine tıklasanız bile, docs UIJavaScript ile çalıştığı için cookie'ler gönderilmez; dolayısıyla hiç değer girmemişsiniz gibi birerror mesajı görürsünüz.
Fazladan Cookie'leri Yasaklayın¶
Bazı özel kullanım senaryolarında (muhtemelen çok yaygın değildir) almak istediğiniz cookie'lerikısıtlamak isteyebilirsiniz.
API'niz artık kendicookie onayı'nı kontrol etme gücüne sahip. 🤪🍪
Pydantic'in model configuration'ını kullanarakextra olan herhangi bir field'ıforbid edebilirsiniz:
fromtypingimportAnnotatedfromfastapiimportCookie,FastAPIfrompydanticimportBaseModelapp=FastAPI()classCookies(BaseModel):model_config={"extra":"forbid"}session_id:strfatebook_tracker:str|None=Nonegoogall_tracker:str|None=None@app.get("/items/")asyncdefread_items(cookies:Annotated[Cookies,Cookie()]):returncookies🤓 Other versions and variants
Tip
Prefer to use theAnnotated version if possible.
fromfastapiimportCookie,FastAPIfrompydanticimportBaseModelapp=FastAPI()classCookies(BaseModel):model_config={"extra":"forbid"}session_id:strfatebook_tracker:str|None=Nonegoogall_tracker:str|None=None@app.get("/items/")asyncdefread_items(cookies:Cookies=Cookie()):returncookiesBir clientfazladan cookie göndermeye çalışırsa, birerror response alır.
Onayınızı almak için bunca çaba harcayan zavallı cookie banner'ları...API'nin bunu reddetmesi için. 🍪
Örneğin client, değerigood-list-please olan birsanta_tracker cookie'si göndermeye çalışırsa, clientsanta_trackercookie'ye izin verilmiyor diyen birerror response alır:
{"detail":[{"type":"extra_forbidden","loc":["cookie","santa_tracker"],"msg":"Extra inputs are not permitted","input":"good-list-please",}]}Özet¶
FastAPI'decookie tanımlamak içinPydantic model'lerini kullanabilirsiniz. 😎







