Files
fastapi/docs/tr/docs/tutorial/path-params-numeric-validations.md
Sebastián Ramírez b5d276bda8 🌐 Update translations for tr (add-missing) (#14790)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-05 16:43:38 +01:00

6.8 KiB
Raw Blame History

Path Parametreleri ve Sayısal Doğrulamalar

Query ile query parametreleri için daha fazla doğrulama ve metadata tanımlayabildiğiniz gibi, Path ile de path parametreleri için aynı tür doğrulama ve metadata tanımlayabilirsiniz.

Path'i İçe Aktarın

Önce fastapi içinden Path'i ve Annotated'ı içe aktarın:

{* ../../docs_src/path_params_numeric_validations/tutorial001_an_py310.py hl[1,3] *}

/// info | Bilgi

FastAPI, 0.95.0 sürümünde Annotated desteğini ekledi (ve bunu önermeye başladı).

Daha eski bir sürüm kullanıyorsanız, Annotated kullanmaya çalıştığınızda hata alırsınız.

Annotated kullanmadan önce mutlaka FastAPI sürümünü en az 0.95.1 olacak şekilde FastAPI sürümünü yükseltin{.internal-link target=_blank}.

///

Metadata Tanımlayın

Query için geçerli olan parametrelerin aynısını tanımlayabilirsiniz.

Örneğin, item_id path parametresi için bir title metadata değeri tanımlamak isterseniz şunu yazabilirsiniz:

{* ../../docs_src/path_params_numeric_validations/tutorial001_an_py310.py hl[10] *}

/// note | Not

Bir path parametresi her zaman zorunludur, çünkü path'in bir parçası olmak zorundadır. None ile tanımlasanız veya bir varsayılan değer verseniz bile bu hiçbir şeyi değiştirmez; yine her zaman zorunlu olur.

///

Parametreleri İhtiyacınıza Göre Sıralayın

/// tip | İpucu

Annotated kullanıyorsanız, bu muhtemelen o kadar önemli ya da gerekli değildir.

///

Diyelim ki query parametresi q'yu zorunlu bir str olarak tanımlamak istiyorsunuz.

Ayrıca bu parametre için başka bir şey tanımlamanız gerekmiyor; dolayısıyla Query kullanmanıza da aslında gerek yok.

Ancak item_id path parametresi için yine de Path kullanmanız gerekiyor. Ve bir sebepten Annotated kullanmak istemiyorsunuz.

Python, "default" değeri olan bir parametreyi, "default" değeri olmayan bir parametreden önce yazarsanız şikayet eder.

Ama bunların sırasını değiştirebilir ve default değeri olmayan parametreyi (query parametresi q) en başa koyabilirsiniz.

Bu FastAPI için önemli değildir. FastAPI parametreleri isimlerine, tiplerine ve default tanımlarına (Query, Path, vb.) göre tespit eder; sırayla ilgilenmez.

Dolayısıyla fonksiyonunuzu şöyle tanımlayabilirsiniz:

{* ../../docs_src/path_params_numeric_validations/tutorial002_py39.py hl[7] *}

Ancak şunu unutmayın: Annotated kullanırsanız bu problem olmaz; çünkü Query() veya Path() için fonksiyon parametresi default değerlerini kullanmıyorsunuz.

{* ../../docs_src/path_params_numeric_validations/tutorial002_an_py39.py *}

Parametreleri İhtiyacınıza Göre Sıralayın: Küçük Hileler

/// tip | İpucu

Annotated kullanıyorsanız, bu muhtemelen o kadar önemli ya da gerekli değildir.

///

İşte bazen işe yarayan küçük bir hile; ama çok sık ihtiyacınız olmayacak.

Şunları yapmak istiyorsanız:

  • q query parametresini Query kullanmadan ve herhangi bir default değer vermeden tanımlamak
  • item_id path parametresini Path kullanarak tanımlamak
  • bunları farklı bir sırada yazmak
  • Annotated kullanmamak

...Python bunun için küçük, özel bir sözdizimi sunar.

Fonksiyonun ilk parametresi olarak * geçin.

Python bu * ile bir şey yapmaz; ama bundan sonraki tüm parametrelerin keyword argument (anahtar-değer çiftleri) olarak çağrılması gerektiğini bilir; buna kwargs da denir. Default değerleri olmasa bile.

{* ../../docs_src/path_params_numeric_validations/tutorial003_py39.py hl[7] *}

Annotated ile Daha İyi

Şunu da unutmayın: Annotated kullanırsanız, fonksiyon parametresi default değerlerini kullanmadığınız için bu sorun ortaya çıkmaz ve muhtemelen * kullanmanız da gerekmez.

{* ../../docs_src/path_params_numeric_validations/tutorial003_an_py39.py hl[10] *}

Sayı Doğrulamaları: Büyük Eşit

Query ve Path (ve ileride göreceğiniz diğerleri) ile sayı kısıtları tanımlayabilirsiniz.

Burada ge=1 ile, item_id değerinin 1'den "greater than or equal" olacak şekilde bir tam sayı olması gerekir.

{* ../../docs_src/path_params_numeric_validations/tutorial004_an_py39.py hl[10] *}

Sayı Doğrulamaları: Büyük ve Küçük Eşit

Aynısı şunlar için de geçerlidir:

  • gt: greater than
  • le: less than or equal

{* ../../docs_src/path_params_numeric_validations/tutorial005_an_py39.py hl[10] *}

Sayı Doğrulamaları: float Değerler, Büyük ve Küçük

Sayı doğrulamaları float değerler için de çalışır.

Burada gt tanımlayabilmek (sadece ge değil) önemli hale gelir. Çünkü örneğin bir değerin 0'dan büyük olmasını isteyebilirsiniz; 1'den küçük olsa bile.

Bu durumda 0.5 geçerli bir değer olur. Ancak 0.0 veya 0 geçerli olmaz.

Aynısı lt için de geçerlidir.

{* ../../docs_src/path_params_numeric_validations/tutorial006_an_py39.py hl[13] *}

Özet

Query, Path (ve henüz görmedikleriniz) ile metadata ve string doğrulamalarını, Query Parametreleri ve String Doğrulamalar{.internal-link target=_blank} bölümündekiyle aynı şekilde tanımlayabilirsiniz.

Ayrıca sayısal doğrulamalar da tanımlayabilirsiniz:

  • gt: greater than
  • ge: greater than or equal
  • lt: less than
  • le: less than or equal

/// info | Bilgi

Query, Path ve ileride göreceğiniz diğer class'lar ortak bir Param class'ının alt class'larıdır.

Hepsi, gördüğünüz ek doğrulama ve metadata parametrelerini paylaşır.

///

/// note | Teknik Detaylar

Query, Path ve diğerlerini fastapi içinden import ettiğinizde, bunlar aslında birer fonksiyondur.

Çağrıldıklarında, aynı isme sahip class'ların instance'larını döndürürler.

Yani Query'yi import edersiniz; bu bir fonksiyondur. Onu çağırdığınızda, yine Query adlı bir class'ın instance'ını döndürür.

Bu fonksiyonlar (class'ları doğrudan kullanmak yerine) editörünüzün type'larıyla ilgili hata işaretlememesi için vardır.

Bu sayede, bu hataları yok saymak üzere özel ayarlar eklemeden normal editörünüzü ve coding araçlarınızı kullanabilirsiniz.

///