diff --git a/docs/tr/docs/tutorial/query-params-str-validations.md b/docs/tr/docs/tutorial/query-params-str-validations.md
new file mode 100644
index 000000000..a5ed5b046
--- /dev/null
+++ b/docs/tr/docs/tutorial/query-params-str-validations.md
@@ -0,0 +1,914 @@
+# Sorgu Parametreleri ve String Doğrulamaları
+
+**FastAPI**, parametreler için ek bilgi ve doğrulama tanımlamalarına olanak sağlar.
+
+Örneğin, aşağıdaki uygulamada:
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="7"
+ {!> ../../../docs_src/query_params_str_validations/tutorial001_py310.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="9"
+ {!> ../../../docs_src/query_params_str_validations/tutorial001.py!}
+ ```
+
+ `q` sorgu parametresi, `Union[str, None]` (Python 3.10'da `str | None`) tipinden olduğundan dolayı `str` ve ayrıca `None` da olabilir ve hatta varsayılan değer olarak `None` aldığından dolayı FastAPI bu parametrenin zorunlu olmadığını anlayacaktır.
+
+!!! note "Not"
+ FastAPI, `= None` varsayılan değerinden dolayı `q` parametresinin zorunlu olmadığını anlayacaktır.
+
+ `Union[str, None]` ifadesinin içindeki `Union` tipi sayesinde editör daha iyi bir desteğe sahip olacak ve hataları tespit edebilecektir.
+
+## Ek Doğrulama
+
+Bu senaryoda, `q` parametresi zorunlu olmasına rağmen tanımlandığında **uzunluğunun 50 karakteri geçmemesi** gerektiğini zorunlu kılacağız.
+
+### `Query` ve `Annotated` İfadelerini İçeri Aktaralım
+
+Bunu sağlamak adına aşağıdaki ifadeleri içeri aktaralım:
+
+* `fastapi` paketinden `Query`
+* `typing` (Python 3.9 veya daha alt versiyonlarda `typing_extensions`) paketinden `Annotated`
+
+=== "Python 3.10+"
+
+ Python 3.9 veya daha üst versiyonlarda `Annotated` standart kütüphaneye dahil olduğundan dolayı direkt olarak `typing` paketinden içeri aktarılabilir.
+
+ ```Python hl_lines="1 3"
+ {!> ../../../docs_src/query_params_str_validations/tutorial002_an_py310.py!}
+ ```
+
+=== "Python 3.8+"
+
+ Python 3.9 veya daha alt versiyonlarda `Annotated`, `typing_extensions` paketinden içeri aktarılmalıdır.
+
+ Halihazırda FastAPI'ya dahili bir şekilde kurulur.
+
+ ```Python hl_lines="3-4"
+ {!> ../../../docs_src/query_params_str_validations/tutorial002_an.py!}
+ ```
+
+!!! info "Bilgi"
+ FastAPI, 0.95.0 versiyonu ile birlikte `Annotated` ifadesini desteklemeye (ve önermeye) başladı.
+
+ Daha eski bir sürüme sahipseniz `Annotated` ifadesini kullanırken hata alacaksınızdır.
+
+ `Annotated` ifadesini kullanmadan önce [FastAPI versiyon güncellemesini](../deployment/versions.md#upgrading-the-fastapi-versions){.internal-link target=_blank} en az 0.95.1 sürümüne getirdiğinizden emin olunuz.
+
+## `Annotated` İfadesini `q` Parametresinde Kullanalım
+
+Hatırlarsanız `Annotated` ifadesinin, parametrelere üstveri eklemede kullanılabileceğini [Python Veri Tiplerine Giriş](../python-types.md#type-hints-with-metadata-annotations){.internal-link target=_blank} bağlantısında bahsetmiştik.
+
+Hadi şimdi bunu FastAPI ile kullanalım. 🚀
+
+Buna benzer bir tip belirtecine sahiptik:
+
+=== "Python 3.10+"
+
+ ```Python
+ q: str | None = None
+ ```
+
+=== "Python 3.8+"
+
+ ```Python
+ q: Union[str, None] = None
+ ```
+
+Bu ifade `Annotated` ile sarmalandıktan sonra şöyle gözükecektir:
+
+=== "Python 3.10+"
+
+ ```Python
+ q: Annotated[str | None] = None
+ ```
+
+=== "Python 3.8+"
+
+ ```Python
+ q: Annotated[Union[str, None]] = None
+ ```
+
+İki versiyon da `q` parametresinin `str` ya da `None` tipinden olabileceğini ve varsayılan olarak `None` olduğunu belirtir.
+
+Hadi eğlenceli kısma geçelim. 🎉
+
+## `q` Parametresindeki `Annotated` İfadesine `Query` Ekleyelim
+
+İçine daha fazla üstveri ekleyebileceğimiz `Annotated` ifadesine sahip olduğumuzdan dolayı içine `Query` ifadesini ekleyip `max_length` değerini 50 olarak tanımlayalım:
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="9"
+ {!> ../../../docs_src/query_params_str_validations/tutorial002_an_py310.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="10"
+ {!> ../../../docs_src/query_params_str_validations/tutorial002_an.py!}
+ ```
+
+Dikkatinizi çekerim ki, varsayılan değer `None` olduğundan dolayı parametremiz hala isteğe bağlıdır.
+
+Fakat şimdi, `Annotated` ifadesinin içine `Query(max_length=50)` ilave ederek bu değerin sorgu parametrelerinden elde edilmesi (varsayılan olarak zaten böyle çalışır 🤷) ve **ek doğrulamaya** sahip olması gerektiğini (bunu yapıyor olmamızın yegâne sebebidir) bildiriyoruz. 😎
+
+Bundan sonra FastAPI:
+
+* Maksimum uzunluğun 50 karakter olmasını göz önünde bulundurarak veriyi **doğrulayacak**
+* Veri geçersiz olduğu durumda istemciye **belirgin bir hata** gösterecek
+* OpenAPI şema *yol operasyonunda* parametreyi **dokümante** edecek (böylece **otomatik dokümantasyon arayüzünde** yer alacak)
+
+## Varsayılan Değer Olarak (Eski) Alternatif `Query`
+
+FastAPI'ın önceki versiyonları, (0.95.0'den önce) `Query`'nin `Annotated` ifadesinin içine konulması yerine fonksiyonda parametrenin varsayılan değeri olmasını zorunlu kılıyordu. Bu tür kullanım içeren kod ile karşılaşma ihtimaliniz yüksek olduğundan dolayı sizleri bu konuda bilgilendirmek isteriz.
+
+!!! tip "İpucu"
+ Yeni yazacağınız programlarda ve mümkün olan her zaman `Annotated` ifadesini (yukarıda açıklandığı şekilde) kullanmaya özen gösteriniz. Bu kullanımın (aşağıda açıklandığı gibi) birden fazla avantajı olmasına karşılık hiçbir dezavantajı bulunmamaktadır. 🍰
+
+`max_length` parametresini 50 değerine atayarak `Query()` ifadesini, fonksiyonda varsayılan parametre değeri olarak aşağıdaki gibi tanımlamanız gerekirdi:
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="7"
+ {!> ../../../docs_src/query_params_str_validations/tutorial002_py310.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="9"
+ {!> ../../../docs_src/query_params_str_validations/tutorial002.py!}
+ ```
+
+(`Annotated` kullanmadığımız) Bu durumda, `Query()` ifadeli fonksiyon parametresindeki `None` varsayılan değerini `Query(default=None)` ifadesi ile değiştirmemiz gerekiyor. Tanımlanan yeni ifade, varsayılan değer atamak için eski ifade ile (en azından FastAPI için) aynı amaca hizmet eder.
+
+Böylece:
+
+```Python
+q: Union[str, None] = Query(default=None)
+```
+
+...ifadesi, parametreyi, `None` varsayılan değeri ile isteğe bağlı bir hale çevirir, aşağıdaki ifadede de olduğu gibi:
+
+```Python
+q: Union[str, None] = None
+```
+
+Python 3.10 ve daha üst versiyonlarda:
+
+```Python
+q: str | None = Query(default=None)
+```
+
+...ifadesi parametreyi, `None` varsayılan değeri ile isteğe bağlı bir hale çevirir, aşağıdaki ifadede de olduğu gibi:
+
+```Python
+q: str | None = None
+```
+
+Fakat bu kullanım parametreyi, açıkça sorgu parametresi olarak tanımlar.
+
+!!! info "Bilgi"
+ Unutmamak gerekir ki, `None` ifadesini varsayılan değer olarak kullanıp parametreyi **zorunlu olmayan** bir hale getirerek:
+
+ ```Python
+ = None
+ ```
+
+ ya da:
+
+ ```Python
+ = Query(default=None)
+ ```
+
+ ifadeleri, bir parametreyi isteğe bağlı bir hale çeviren en önemli kısımlardır.
+
+ `Union[str, None]` ifadeli kısım, editörün daha iyi bir destek sağlamasına olanak sağlar fakat FastAPI'ya parametrenin zorunlu olmadığını belirtmez.
+
+Böylece `Query` ifadesine daha fazla parametre gönderebilir bir hale geliriz. Bu durumda, string değerlere etki eden `max_length` ifadesini örnek verebiliriz:
+
+```Python
+q: Union[str, None] = Query(default=None, max_length=50)
+```
+
+Bu ifade veriyi doğrulayacak, veri geçersiz olduğunda belirgin bir hata gösterecek ve OpenAPI şema *yol operasyonundaki* parameteyi dokümante edecek.
+
+### Varsayılan Değer Olarak `Query` veya `Annotated` İfadesinin İçinde
+
+Unutmamanız gerekir ki, `Annotated` ifadesinin içinde `Query` kullanırken `Query` için `default` parametresini kullanamazsınız.
+
+Tutarsızlık olmaması adına fonksiyon parametresinin asıl varsayılan değerini kullanabilirsiniz.
+
+Mesela, böyle bir kullanım:
+
+```Python
+q: Annotated[str, Query(default="rick")] = "morty"
+```
+
+...varsayılan değerin, `"rick"` ya da `"morty"` değerlerinden hangisi olduğu belli olmadığından dolayı mümkün değildir.
+
+Bu yüzden, (tercihen) böyle kullanmalısınız:
+
+```Python
+q: Annotated[str, Query()] = "rick"
+```
+
+...veya eski kodlarda şununla karşılaşabilirsiniz:
+
+```Python
+q: str = Query(default="rick")
+```
+
+### `Annotated` İfadesinin Avantajları
+
+Fonksiyon parametrelerindeki varsayılan değerler yerine **`Annotated` kullanımı tavsiye edilir** ve bu kullanım birçok sebepten ötürü **daha iyidir**. 🤓
+
+**Fonksiyon parametresindeki** **varsayılan** değer Python dili ile daha sezgisel çalışan **asıl varsayılan** değerdir. 😌
+
+Aynı fonksiyon, FastAPI olmadan da **farklı yerlerde** **çağırılabilir** ve **beklenildiği gibi çalışır**. Eğer ortada **zorunlu** (varsayılan değeri olmayan) bir parametre varsa **editörünüz** sizi bir hata ile bilgilendirecektir, aynı şekilde, fonksiyonu, zorunlu parametre olmadan çalıştırırsanız **Python** huysuzlanacaktır.
+
+`Annotated` ifadesini kullanmayıp yerine **(eski) varsayılan değer tarzını** tercih ederseniz ve eğer fonksiyonu FastAPI olmadan **farklı bir yerde** çağırırsanız fonksiyonun doğru bir şekilde çalışması adına parametreleri doğru bir şekilde şekilde geçmeyi **unutmamalısınız**. Aksi takdirde değerler beklediğinizden farklı bir şekilde tanımlanacaktır (örneğin `QueryInfo` ya da `str` olmayan benzer bir değer). Ayrıca, bu durumda fonksiyon içindeki işlemler hata vermediği sürece editörünüz ve Python, fonksiyon çalışırken huysuzlanmayacaktır.
+
+`Annotated` ifadesi birden fazla üstveri alabileceği için aynı fonksiyonu Typer gibi araçlar ile de kullanabilirsiniz. 🚀
+
+## Daha Fazla Doğrulama Ekleyelim
+
+`min_length` parametresini de kullanabiliriz:
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="10"
+ {!> ../../../docs_src/query_params_str_validations/tutorial003_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="10"
+ {!> ../../../docs_src/query_params_str_validations/tutorial003_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="11"
+ {!> ../../../docs_src/query_params_str_validations/tutorial003_an.py!}
+ ```
+
+=== "Python 3.10+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="7"
+ {!> ../../../docs_src/query_params_str_validations/tutorial003_py310.py!}
+ ```
+
+=== "Python 3.8+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="10"
+ {!> ../../../docs_src/query_params_str_validations/tutorial003.py!}
+ ```
+
+## Regular Expression Ekleyelim
+
+Parametrenin eşleşeceği bir regular expression `patterni` tanımlayabilirsiniz:
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="11"
+ {!> ../../../docs_src/query_params_str_validations/tutorial004_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="11"
+ {!> ../../../docs_src/query_params_str_validations/tutorial004_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="12"
+ {!> ../../../docs_src/query_params_str_validations/tutorial004_an.py!}
+ ```
+
+=== "Python 3.10+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="9"
+ {!> ../../../docs_src/query_params_str_validations/tutorial004_py310.py!}
+ ```
+
+=== "Python 3.8+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="11"
+ {!> ../../../docs_src/query_params_str_validations/tutorial004.py!}
+ ```
+
+Bu regular expression patterni, alınan parametre değerinin aşağıdaki durumlara uyumluluğunu kontrol eder:
+
+* `^`: kendinden önce herhangi bir karakter bulundurmaz ve ardından gelen karakterler ile başlar.
+* `fixedquery`: `fixedquery` ile aynı değerdedir.
+* `$`: burada biter ve `fixedquery` değerinin ardından herhangi bir karakter gelmez.
+
+Bütün bu **"regular expressionlar"** ile kafanız karıştı ise endişelenmeyin. Çoğu insan için bu konu epeyce zordur. Regular expressionlara ihtiyaç duymadan da hala bir çok şey yapabilirsiniz.
+
+Fakat ne zaman onlara ihtiyacınız olursa **FastAPI** ile halihazırda kullanılabilir olduklarını aklınızda bulundurmanızda fayda vardır.
+
+### Pydantic v1 Versiyonunda `pattern` Yerine `regex`
+
+Pydantic versiyon 2 ve FastAPI 0.100.0 versiyonlarından önce bu parametre, `pattern` yerine `regex` diye yazılıyordu fakat artık kullanılmıyor.
+
+Bu kullanımı içeren kodlar ile hala karşılaşabilirsiniz:
+
+=== "Python 3.10+ Pydantic v1"
+
+ ```Python hl_lines="11"
+ {!> ../../../docs_src/query_params_str_validations/tutorial004_an_py310_regex.py!}
+ ```
+
+Fakat, artık kullanılmadığını ve yeni `pattern` parametresine güncellenmesi gerektiğini aklınızda bulundurmalısınız. 🤓
+
+## Varsayılan Değerler
+
+Elbette, `None` dışında farklı varsayılan değerler de kullanabilirsiniz.
+
+Farz edelim ki, `q` sorgu parametresinin `min_length` değerinin `3` ve varsayılan değerinin `"fixedquery"` olması gerekiyor:
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="9"
+ {!> ../../../docs_src/query_params_str_validations/tutorial005_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="8"
+ {!> ../../../docs_src/query_params_str_validations/tutorial005_an.py!}
+ ```
+
+=== "Python 3.8+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="7"
+ {!> ../../../docs_src/query_params_str_validations/tutorial005.py!}
+ ```
+
+!!! note "Not"
+ `None` ifadesi dahil herhangi bir tipten varsayılan bir değere sahip olmak, parametreyi isteğe bağlı (zorunlu olmayan) bir hale getirir.
+
+## Zorunlu Hale Getirelim
+
+Daha fazla doğrulama veya üstveri eklemeye ihtiyacımız olmadığı zamanlarda `q` sorgu parametresini aşağıdaki gibi varsayılan bir değer tanımlamayarak zorunlu hale getirebiliriz:
+
+```Python
+q: str
+```
+
+şunun yerine:
+
+```Python
+q: Union[str, None] = None
+```
+
+Şimdi ise `Query` ifadesi ile tanımlıyoruz, şu şekilde:
+
+=== "Annotated"
+
+ ```Python
+ q: Annotated[Union[str, None], Query(min_length=3)] = None
+ ```
+
+=== "Annotated'sız"
+
+ ```Python
+ q: Union[str, None] = Query(default=None, min_length=3)
+ ```
+
+Yani, `Query` ifadesini kullanırken bir değeri zorunlu kılmak istiyorsanız varsayılan bir değer tanımlamamanız yeterli olacaktır:
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="9"
+ {!> ../../../docs_src/query_params_str_validations/tutorial006_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="8"
+ {!> ../../../docs_src/query_params_str_validations/tutorial006_an.py!}
+ ```
+
+=== "Python 3.8+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="7"
+ {!> ../../../docs_src/query_params_str_validations/tutorial006.py!}
+ ```
+
+ !!! tip "İpucu"
+ Dikkatinizi çekerim ki, burada `Query()` ifadesi, fonksiyon parametresinin varsayılan değeri olarak tanımlanmış olmasına rağmen `default=None` ifadesini `Query()`'ya geçmedik.
+
+ Yine de, `Annotated`'lı versiyonu kullanmak muhtemelen daha iyi olacaktır. 😉
+
+### Üç Nokta (`...`) ile Zorunlu Kılmak
+
+Bir değeri açıkça zorunlu kılmak için alternatif bir yol daha vardır. Bunu yapmak için varsayılan değeri `...` yapabilirsiniz:
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="9"
+ {!> ../../../docs_src/query_params_str_validations/tutorial006b_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="8"
+ {!> ../../../docs_src/query_params_str_validations/tutorial006b_an.py!}
+ ```
+
+=== "Python 3.8+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="7"
+ {!> ../../../docs_src/query_params_str_validations/tutorial006b.py!}
+ ```
+
+!!! info "Bilgi"
+ Eğer daha önce `...` ile karşılaşmadıysanız bu ifade Python'ın bir parçasıdır ve "Ellipsis" (üç nokta) olarak adlandırılır.
+
+ Bu ifade, Pydantic ve FastAPI tarafından bir değeri açıkça zorunlu kılmak için kullanılır.
+
+Bu kullanım, **FastAPI**'ın parametreyi zorunlu olarak tanımasına olanak sağlayacaktır.
+
+### `None` ile Zorunlu Kılmak
+
+Bir parametreyi, `None` değerini alıyor olmasına rağmen zorunlu bir hale getirebilirsiniz. Bu kullanım, istemcileri, değer `None` olsa bile bir değer göndermeye mecbur kılar.
+
+Bunu yapmak için `None` değerini geçerli hale getirip varsayılan değeri `...` yapabilirsiniz:
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="9"
+ {!> ../../../docs_src/query_params_str_validations/tutorial006c_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="9"
+ {!> ../../../docs_src/query_params_str_validations/tutorial006c_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="10"
+ {!> ../../../docs_src/query_params_str_validations/tutorial006c_an.py!}
+ ```
+
+=== "Python 3.10+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="7"
+ {!> ../../../docs_src/query_params_str_validations/tutorial006c_py310.py!}
+ ```
+
+=== "Python 3.8+ Annotated'sız"
+
+ !!! tip
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="9"
+ {!> ../../../docs_src/query_params_str_validations/tutorial006c.py!}
+ ```
+
+!!! tip "İpucu"
+ FastAPI'daki tüm veri doğrulamaya ve serializationa güç veren Pydantic'in, `Optional` veya `Union[Something, None]` ifadeleri varsayılan değer olmadan kullanıldığında ortaya çıkan ve Zorunlu İsteğe Bağlı alanlar bağlantısında daha fazla bilgisini bulabileceğiniz özel bir davranışı vardır.
+
+!!! tip "İpucu"
+ Unutmayınız ki, çoğu durumda, bir değer zorunlu ise varsayılan bir değere ihtiyaç kalmaz, yani `...` ifadesini kullanmanıza pek de gerek yoktur.
+
+## Sorgu Parametre Listesi / Birden Fazla Değer
+
+`Query` ifadesini kullanarak açıkça bir sorgu parametresi tanımlarken parametrenin bir değerler listesi, diğer bir deyişle birden fazla değer almasını da sağlayabilirsiniz.
+
+Örneğin, bağlantıda birden fazla kez bulunabilecek `q` adında bir sorgu parametresi tanımlamak adına şu kullanımı tercih edebilirsiniz:
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="9"
+ {!> ../../../docs_src/query_params_str_validations/tutorial011_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="9"
+ {!> ../../../docs_src/query_params_str_validations/tutorial011_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="10"
+ {!> ../../../docs_src/query_params_str_validations/tutorial011_an.py!}
+ ```
+
+=== "Python 3.10+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="7"
+ {!> ../../../docs_src/query_params_str_validations/tutorial011_py310.py!}
+ ```
+
+=== "Python 3.9+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="9"
+ {!> ../../../docs_src/query_params_str_validations/tutorial011_py39.py!}
+ ```
+
+=== "Python 3.8+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="9"
+ {!> ../../../docs_src/query_params_str_validations/tutorial011.py!}
+ ```
+
+Sonrasında, böyle bir bağlantı ile:
+
+```
+http://localhost:8000/items/?q=foo&q=bar
+```
+
+`q` *sorgu parametresinin* birden fazla değerini (`foo` ve `bar`) *yol operasyon fonksiyonu* içerisinde olan `q` *fonksiyon parametresinde* Python `list` dahilinde alabilirsiniz.
+
+Sonuç olarak, bu bağlantı için şuna benzer bir yanıt alırsınız:
+
+```JSON
+{
+ "q": [
+ "foo",
+ "bar"
+ ]
+}
+```
+
+!!! tip "İpucu"
+ `list` tipinde bir sorgu parametresi tanımlamak adına açıkça `Query` ifadesini kullanmalısınız. Aksi takdirde parametre, istek gövdesi olarak yorumlanacaktır.
+
+Etkileşimli API dokümantasyonu da birden fazla değere izin verebilmek adına bu doğrultuda güncellenecektir:
+
+
+
+### Sorgu Parametre Listesi / Varsayılan Değerler ile Birden Fazla Değer
+
+Ayrıca, veri iletilmediği durumlar için varsayılan bir değerler `list`'i de tanımlayabilirsiniz:
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="9"
+ {!> ../../../docs_src/query_params_str_validations/tutorial012_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="10"
+ {!> ../../../docs_src/query_params_str_validations/tutorial012_an.py!}
+ ```
+
+=== "Python 3.9+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="7"
+ {!> ../../../docs_src/query_params_str_validations/tutorial012_py39.py!}
+ ```
+
+=== "Python 3.8+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="9"
+ {!> ../../../docs_src/query_params_str_validations/tutorial012.py!}
+ ```
+
+Şu bağlantıyı ziyaret ederseniz:
+
+```
+http://localhost:8000/items/
+```
+
+`q` için varsayılan değer `["foo", "bar"]` olacak ve aldığınız yanıt şu olacaktır:
+
+```JSON
+{
+ "q": [
+ "foo",
+ "bar"
+ ]
+}
+```
+
+#### `list` Kullanımı
+
+Üstelik, `List[str]` (ya da Python 3.9 ve daha üst versiyonlarda `list[str]`) yerine direkt olarak `list` kullanabilirsiniz.:
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="9"
+ {!> ../../../docs_src/query_params_str_validations/tutorial013_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="8"
+ {!> ../../../docs_src/query_params_str_validations/tutorial013_an.py!}
+ ```
+
+=== "Python 3.8+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="7"
+ {!> ../../../docs_src/query_params_str_validations/tutorial013.py!}
+ ```
+
+!!! note "Not"
+ Unutmamak gerekir ki, bu durumda FastAPI, listenin içeriğini denetlemeyecektir.
+
+ Örneğin, `List[int]` ifadesi, listenin içeriğinin integerlardan oluşması gerektiğini denetler (ve dokümante eder). Fakat, yalnız başına `list` bunu yapmaz.
+
+## Daha Fazla Üstveri Tanımlayalım
+
+Parametre ile ilgili fazladan bilgi tanımı yapabilirsiniz.
+
+Yaptığınız bilgi tanımı, oluşturulmuş olan OpenAPI dokümantasyonuna dahil edilir ve dokümantasyon kullanıcı arayüzleri ve harici araçlar tarafından kullanılır.
+
+!!! note "Not"
+ Unutmamanız gerekir ki, farklı araçların farklı düzeylerde OpenAPI desteği bulunur.
+
+ Bazıları tanımlanmış ek bilgileri göstermeyebilir fakat çoğu durumda bu eksik olan özellik geliştirme için halihazırda planlıdır.
+
+`title` ekleyebilirsiniz:
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="10"
+ {!> ../../../docs_src/query_params_str_validations/tutorial007_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="10"
+ {!> ../../../docs_src/query_params_str_validations/tutorial007_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="11"
+ {!> ../../../docs_src/query_params_str_validations/tutorial007_an.py!}
+ ```
+
+=== "Python 3.10+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="8"
+ {!> ../../../docs_src/query_params_str_validations/tutorial007_py310.py!}
+ ```
+
+=== "Python 3.8+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="10"
+ {!> ../../../docs_src/query_params_str_validations/tutorial007.py!}
+ ```
+
+`description` da dahil edebilirsiniz:
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="14"
+ {!> ../../../docs_src/query_params_str_validations/tutorial008_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="14"
+ {!> ../../../docs_src/query_params_str_validations/tutorial008_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="15"
+ {!> ../../../docs_src/query_params_str_validations/tutorial008_an.py!}
+ ```
+
+=== "Python 3.10+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="11"
+ {!> ../../../docs_src/query_params_str_validations/tutorial008_py310.py!}
+ ```
+
+=== "Python 3.8+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="13"
+ {!> ../../../docs_src/query_params_str_validations/tutorial008.py!}
+ ```
+
+## Parametreler İçin Takma Ad
+
+Diyelim ki parametrenin `item-query` olmasını istiyorsunuz.
+
+Aynı şuradaki gibi:
+
+```
+http://127.0.0.1:8000/items/?item-query=foobaritems
+```
+
+Fakat, `item-query` ifadesinin geçerli bir Python değişken ismi olmadığını fark ettiniz.
+
+Buna en benzer ifade `item_query` olacaktır.
+
+Fakat, yine de ifadenin harfiyen `item-query` olmasını istiyorsunuz...
+
+Bunun için parametre değerini bulmak adına kullanılacak olan bir `alias` tanımlayabilirsiniz:
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="9"
+ {!> ../../../docs_src/query_params_str_validations/tutorial009_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="9"
+ {!> ../../../docs_src/query_params_str_validations/tutorial009_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="10"
+ {!> ../../../docs_src/query_params_str_validations/tutorial009_an.py!}
+ ```
+
+=== "Python 3.10+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="7"
+ {!> ../../../docs_src/query_params_str_validations/tutorial009_py310.py!}
+ ```
+
+=== "Python 3.8+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="9"
+ {!> ../../../docs_src/query_params_str_validations/tutorial009.py!}
+ ```
+
+## Parametreleri Kullanımdan Kaldırmak
+
+Farz edelim ki bir parametreden artık hoşnut değilsiniz.
+
+Fakat, parametreyi kullanan istemciler olduğundan dolayı onu kaldıramıyorsunuz ama dokümantasyonun, parametrenin kullanımdan kaldırıldığını açıkça belirtmesini istiyorsunuz.
+
+Bunun için `Query` ifadesine `deprecated=True` parametresini geçebilirsiniz:
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="19"
+ {!> ../../../docs_src/query_params_str_validations/tutorial010_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="19"
+ {!> ../../../docs_src/query_params_str_validations/tutorial010_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="20"
+ {!> ../../../docs_src/query_params_str_validations/tutorial010_an.py!}
+ ```
+
+=== "Python 3.10+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="16"
+ {!> ../../../docs_src/query_params_str_validations/tutorial010_py310.py!}
+ ```
+
+=== "Python 3.8+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="18"
+ {!> ../../../docs_src/query_params_str_validations/tutorial010.py!}
+ ```
+
+Dokümantasyon şu şekilde görünecektir:
+
+
+
+## OpenAPI'e Dahil Etmemek
+
+Bir sorgu parametresini, oluşturulan OpenAPI şemasının (ve dolayısıyla otomatik dokümantasyon sisteminin) haricinde tutmak için `Query` ifadesinin `include_in_schema` parametresini `False` değerine atayabilirsiniz:
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="10"
+ {!> ../../../docs_src/query_params_str_validations/tutorial014_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="10"
+ {!> ../../../docs_src/query_params_str_validations/tutorial014_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="11"
+ {!> ../../../docs_src/query_params_str_validations/tutorial014_an.py!}
+ ```
+
+=== "Python 3.10+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="8"
+ {!> ../../../docs_src/query_params_str_validations/tutorial014_py310.py!}
+ ```
+
+=== "Python 3.8+ Annotated'sız"
+
+ !!! tip "İpucu"
+ Mümkün oldukça `Annotated`'lı versiyonu kullanmaya özen gösteriniz.
+
+ ```Python hl_lines="10"
+ {!> ../../../docs_src/query_params_str_validations/tutorial014.py!}
+ ```
+
+## Özet
+
+Parametreleriniz için ek doğrulama ve üstveriler tanımlayabilirsiniz.
+
+Jenerik doğrulama ve üstveriler:
+
+* `alias`
+* `title`
+* `description`
+* `deprecated`
+
+Stringlere özgü doğrulamalar:
+
+* `min_length`
+* `max_length`
+* `pattern`
+
+Gösterilen örneklerde `str` için doğrulamaların nasıl tanımlanacağı işlenmiştir.
+
+Sayılar gibi diğer tipler için doğrulamaların nasıl tanımlandığını görmek adına sonraki bölümlere göz atabilirsiniz.