You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3.4 KiB

Cookie Parametre Modelleri

Birbirleriyle ilişkili bir cookie grubunuz varsa, bunları tanımlamak için bir Pydantic model oluşturabilirsiniz. 🍪

Bu sayede model'i yeniden kullanabilir, birden fazla yerde tekrar tekrar kullanabilir ve tüm parametreler için validation ve metadata'yı tek seferde tanımlayabilirsiniz. 😎

/// note | Not

Bu özellik FastAPI'nin 0.115.0 sürümünden itibaren desteklenmektedir. 🤓

///

/// tip | İpucu

Aynı teknik Query, Cookie ve Header için de geçerlidir. 😎

///

Pydantic Model ile Cookies

İhtiyacınız olan cookie parametrelerini bir Pydantic model içinde tanımlayın ve ardından parametreyi Cookie olarak bildirin:

{* ../../docs_src/cookie_param_models/tutorial001_an_py310.py hl[9:12,16] *}

FastAPI, request ile gelen cookies içinden her bir field için veriyi extract 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:

/// note | Not

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ındaki API docs UI'a giderseniz, path operation'larınız için cookie'lerin dokümantasyonunu görebilirsiniz.

Ancak verileri doldurup "Execute" düğmesine tıklasanız bile, docs UI JavaScript ile çalıştığı için cookie'ler gönderilmez; dolayısıyla hiç değer girmemişsiniz gibi bir error 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'leri kısıtlamak isteyebilirsiniz.

API'niz artık kendi cookie onayı'nı kontrol etme gücüne sahip. 🤪🍪

Pydantic'in model configuration'ını kullanarak extra olan herhangi bir field'ı forbid edebilirsiniz:

{* ../../docs_src/cookie_param_models/tutorial002_an_py310.py hl[10] *}

Bir client fazladan cookie göndermeye çalışırsa, bir error 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ğeri good-list-please olan bir santa_tracker cookie'si göndermeye çalışırsa, client santa_tracker cookie'ye izin verilmiyor diyen bir error response alır:

{
    "detail": [
        {
            "type": "extra_forbidden",
            "loc": ["cookie", "santa_tracker"],
            "msg": "Extra inputs are not permitted",
            "input": "good-list-please",
        }
    ]
}

Özet

FastAPI'de cookie tanımlamak için Pydantic model'lerini kullanabilirsiniz. 😎