Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🌐 Add Turkish translation for docs/tr/docs/tutorial/query-params.md #11078

Merged
merged 3 commits into from
Feb 18, 2024
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
227 changes: 227 additions & 0 deletions docs/tr/docs/tutorial/query-params.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,227 @@
# Sorgu Parametreleri

Yol parametrelerinin parçası olmayan diğer fonksiyon parametreleri tanımlandığında bunlar otomatik olarak "sorgu" parametresi olarak yorumlanır.
emrhnsyts marked this conversation as resolved.
Show resolved Hide resolved

```Python hl_lines="9"
{!../../../docs_src/query_params/tutorial001.py!}
```

Sorgu, URL'deki `?` kısmından sonra gelen ve `&` işareti ile ayrılan anahtar-değer çiftlerinin oluşturduğu bir kümedir.
emrhnsyts marked this conversation as resolved.
Show resolved Hide resolved

Örneğin, aşağıdaki URL'de:
emrhnsyts marked this conversation as resolved.
Show resolved Hide resolved

```
http://127.0.0.1:8000/items/?skip=0&limit=10
```

...sorgu parametreleri şunlardır:

* `skip`: değeri `0`'dır
* `limit`: değeri `10`'dır

Parametreler URL'nin bir parçası oldukları için doğal olarak string olarak değerlendirilirler.
emrhnsyts marked this conversation as resolved.
Show resolved Hide resolved

Fakat, Python tipleri ile tanımlandıkları zaman (yukarıdaki örnekte `int` oldukları gibi), parametreler o tiplere dönüştürülür ve o tipler çerçevesinde doğrulanırlar.

Yol parametreleri için geçerli olan her türlü işlem aynı şekilde sorgu parametreleri için de geçerlidir:

* Editör desteği (şüphesiz)
* Veri <abbr title="HTTP isteği ile birlikte gelen string'i Python verisine dönüştürme">"ayrıştırma"</abbr>
emrhnsyts marked this conversation as resolved.
Show resolved Hide resolved
* Veri doğrulama
* Otomatik dokümantasyon

## Varsayılanlar

Sorgu parametreleri, adres yolunun sabit bir parçası olmadıklarından dolayı opsiyoneldirler ve varsayılan değere sahip olabilirler.
emrhnsyts marked this conversation as resolved.
Show resolved Hide resolved

Yukarıdaki örnekte `skip=0` ve `limit=10` varsayılan değere sahiplerdir.

Yani, aşağıdaki URL'ye gitmek:
emrhnsyts marked this conversation as resolved.
Show resolved Hide resolved

```
http://127.0.0.1:8000/items/
```

şu adrese gitmek ile aynı etkiye sahiptir:

```
http://127.0.0.1:8000/items/?skip=0&limit=10
```

Ancak, mesela şöyle bir adresi ziyaret ederseniz:

```
http://127.0.0.1:8000/items/?skip=20
```

Fonksiyonunuzdaki parametre değerleri aşağıdaki gibi olacaktır:

* `skip=20`: çünkü URL'de böyle tanımlandı.
emrhnsyts marked this conversation as resolved.
Show resolved Hide resolved
* `limit=10`: çünkü varsayılan değer buydu.

## Opsiyonel Parametreler
emrhnsyts marked this conversation as resolved.
Show resolved Hide resolved

Aynı şekilde, varsayılan değerlerini `None` olarak atayarak opsiyonel parametreler tanımlayabilirsiniz:
emrhnsyts marked this conversation as resolved.
Show resolved Hide resolved

=== "Python 3.10+"

```Python hl_lines="7"
{!> ../../../docs_src/query_params/tutorial002_py310.py!}
```

=== "Python 3.8+"

```Python hl_lines="9"
{!> ../../../docs_src/query_params/tutorial002.py!}
```

Bu durumda, `q` fonksiyon parametresi opsiyonel olacak ve varsayılan değer olarak `None` alacaktır.
emrhnsyts marked this conversation as resolved.
Show resolved Hide resolved

!!! check "Ek bilgi"
Ayrıca, dikkatinizi çekerim ki; **FastAPI**, `item_id` parametresinin bir yol parametresi olduğunu ve `q` parametresinin yol değil bir sorgu parametresi olduğunu fark edecek kadar beceriklidir.

## Sorgu Parametresi Tip Dönüşümü

Aşağıda görüldüğü gibi dönüştürülmek üzere `bool` tipleri de tanımlayabilirsiniz:

=== "Python 3.10+"

```Python hl_lines="7"
{!> ../../../docs_src/query_params/tutorial003_py310.py!}
```

=== "Python 3.8+"

```Python hl_lines="9"
{!> ../../../docs_src/query_params/tutorial003.py!}
```

Bu durumda, eğer şu adrese giderseniz:

```
http://127.0.0.1:8000/items/foo?short=1
```

veya

```
http://127.0.0.1:8000/items/foo?short=True
```

veya

```
http://127.0.0.1:8000/items/foo?short=true
```

veya

```
http://127.0.0.1:8000/items/foo?short=on
```

veya

```
http://127.0.0.1:8000/items/foo?short=yes
```

veya adres, herhangi farklı bir harf varyasyonu içermesi durumuna rağmen (büyük harf, sadece baş harfi büyük kelime, vb.) fonksiyonunuz, `bool` tipli `short` parametresini `True` olarak algılayacaktır. Aksi halde `False` olarak algılanacaktır.


## Çoklu Yol ve Sorgu Parametreleri

**FastAPI** neyin ne olduğunu ayırt edebileceğinden dolayı aynı anda birden fazla yol ve sorgu parametresi tanımlayabilirsiniz.

Ve parametreleri, herhangi belirli bir sıraya koymanıza da gerek yoktur.
emrhnsyts marked this conversation as resolved.
Show resolved Hide resolved

İsimlerine göre belirleneceklerdir:

=== "Python 3.10+"

```Python hl_lines="6 8"
{!> ../../../docs_src/query_params/tutorial004_py310.py!}
```

=== "Python 3.8+"

```Python hl_lines="8 10"
{!> ../../../docs_src/query_params/tutorial004.py!}
```

## Zorunlu Sorgu Parametreleri

Türü yol olmayan bir parametre (şu ana kadar sadece sorgu parametrelerini gördük) için varsayılan değer tanımlarsanız o parametre zorunlu olmayacaktır.

Parametre için belirli bir değer atamak istemeyip parametrenin sadece opsiyonel olmasını istiyorsanız değerini `None` olarak atayabilirsiniz.
emrhnsyts marked this conversation as resolved.
Show resolved Hide resolved

Fakat, bir sorgu parametresini zorunlu yapmak istiyorsanız varsayılan bir değer atama gibi bir hakkınız bulunmamaktadır:
emrhnsyts marked this conversation as resolved.
Show resolved Hide resolved

```Python hl_lines="6-7"
{!../../../docs_src/query_params/tutorial005.py!}
```

Burada `needy` parametresi `str` tipinden oluşan bir sorgu parametresidir.
emrhnsyts marked this conversation as resolved.
Show resolved Hide resolved

Eğer tarayıcınızda şu URL'yi:
emrhnsyts marked this conversation as resolved.
Show resolved Hide resolved

```
http://127.0.0.1:8000/items/foo-item
```

...`needy` parametresini eklemeden açarsanız şuna benzer bir hata ile karşılaşırsınız:

```JSON
{
"detail": [
{
"type": "missing",
"loc": [
"query",
"needy"
],
"msg": "Field required",
"input": null,
"url": "https://errors.pydantic.dev/2.1/v/missing"
}
]
}
```

`needy` zorunlu bir parametre olduğundan dolayı URL adresinde onu tanımlamak mecburidir:
emrhnsyts marked this conversation as resolved.
Show resolved Hide resolved

```
http://127.0.0.1:8000/items/foo-item?needy=sooooneedy
```

...bu iş görür:

```JSON
{
"item_id": "foo-item",
"needy": "sooooneedy"
}
```

Ve elbette, bazı parametreleri zorunlu, bazılarını varsayılan değerli ve bazılarını tamamen opsiyonel olarak tanımlayabilirsiniz:

=== "Python 3.10+"

```Python hl_lines="8"
{!> ../../../docs_src/query_params/tutorial006_py310.py!}
```

=== "Python 3.8+"

```Python hl_lines="10"
{!> ../../../docs_src/query_params/tutorial006.py!}
```

Bu durumda, 3 tane sorgu parametresi var olacaktır:

* `needy`, zorunlu bir `str`.
* `skip`, varsayılan değeri `0` olan bir `int`.
* `limit`, opsiyonel bir `int`.
emrhnsyts marked this conversation as resolved.
Show resolved Hide resolved

!!! tip "İpucu"
Ayrıca, [Yol Parametrelerinde](path-params.md#predefined-values){.internal-link target=_blank} de kullanıldığı şekilde `Enum` sınıfından faydalanabilirsiniz.
emrhnsyts marked this conversation as resolved.
Show resolved Hide resolved