@ -8,28 +8,21 @@ API'lar genellikle her zaman bir **yanıt** gövdesi iletmek zorundadır. Fakat,
Bütün güç ve avantajlarından faydalınılarak <ahref="https://pydantic-docs.helpmanual.io/"class="external-link"target="_blank">Pydantic</a> modelleri, **istek** gövdeleri oluşturmak için kullanılır.
Bütün güç ve avantajlarından faydalınılarak <ahref="https://pydantic-docs.helpmanual.io/"class="external-link"target="_blank">Pydantic</a> modelleri, **istek** gövdeleri oluşturmak için kullanılır.
!!! info "Bilgi"
/// info | Bilgi
Veri göndermek için `POST` (en yaygın), `PUT`, `DELETE` veya `PATCH` kullanılır.
Veri göndermek için `POST` (en yaygın), `PUT`, `DELETE` veya `PATCH` kullanılır.
Bir gövde göndermek için `GET` isteği kullanılmasının, spesifikasyonlar üzerinde beklenmedik etkilere sahip olmasına rağmen, bu olay, özellikle fazlasıyla karmaşık veya olağandışı durumlar için FastAPI tarafından desteklenir.
Bir gövde göndermek için `GET` isteği kullanılmasının, spesifikasyonlar üzerinde beklenmedik etkilere sahip olmasına rağmen, bu olay, özellikle fazlasıyla karmaşık veya olağandışı durumlar için FastAPI tarafından desteklenir.
Bahsedilen durumun uygulanması tavsiye edilmediğinden dolayı `GET` isteği kullanılırken Swagger UI destekli interaktif doküman, gövde için ek alan göstermeyecektir. Ayrıca aradaki proxyler de bunu desteklemeyebilir.
Bahsedilen durumun uygulanması tavsiye edilmediğinden dolayı `GET` isteği kullanılırken Swagger UI destekli interaktif doküman, gövde için ek alan göstermeyecektir. Ayrıca aradaki proxyler de bunu desteklemeyebilir.
///
## Pydantic'in `BaseModel`'ini Projeye Dahil Edelim
## Pydantic'in `BaseModel`'ini Projeye Dahil Edelim
Öncelikle, `BaseModel` sınıfını `pydantic` paketinden projemize dahil edelim:
Öncelikle, `BaseModel` sınıfını `pydantic` paketinden projemize dahil edelim:
Sorgu parametrelerinde olduğu gibi, bir model özelliği, varsayılan değere sahipse o özellik zorunlu değildir, eğer sahip değilse zorunludur. Özellikler, `None` kullanılarak isteğe bağlı hale getirilebilirler.
Sorgu parametrelerinde olduğu gibi, bir model özelliği, varsayılan değere sahipse o özellik zorunlu değildir, eğer sahip değilse zorunludur. Özellikler, `None` kullanılarak isteğe bağlı hale getirilebilirler.
@ -75,17 +58,7 @@ Sorgu parametrelerinde olduğu gibi, bir model özelliği, varsayılan değere s
Gövdeyi, bir *yol operasyonu* olarak eklemek için yol ve sorgu parametrelerinde yaptığımız gibi tanımlayabiliriz:
Gövdeyi, bir *yol operasyonu* olarak eklemek için yol ve sorgu parametrelerinde yaptığımız gibi tanımlayabiliriz:
...sonrasında yarattığımız `Item` modelini gövde tipi olarak tanımlayalım.
...sonrasında yarattığımız `Item` modelini gövde tipi olarak tanımlayalım.
@ -134,7 +107,8 @@ Halbuki, aynı editör desteğini, <a href="https://www.jetbrains.com/pycharm/"
<imgsrc="/img/tutorial/body/image05.png">
<imgsrc="/img/tutorial/body/image05.png">
!!! tip "İpucu"
/// tip | İpucu
Eğer, editörünüz olarak <ahref="https://www.jetbrains.com/pycharm/"class="external-link"target="_blank">PyCharm</a> uygulamasını kullanıyorsanız <ahref="https://github.com/koxudaxi/pydantic-pycharm-plugin/"class="external-link"target="_blank">Pydantic PyCharm Plugin</a> eklentisinden de faydalanabilirsiniz.
Eğer, editörünüz olarak <ahref="https://www.jetbrains.com/pycharm/"class="external-link"target="_blank">PyCharm</a> uygulamasını kullanıyorsanız <ahref="https://github.com/koxudaxi/pydantic-pycharm-plugin/"class="external-link"target="_blank">Pydantic PyCharm Plugin</a> eklentisinden de faydalanabilirsiniz.
Bu eklenti, aşağıdaki özellikler ile birlikte Pydantic modelleri için editör desteğini güçlendirir:
Bu eklenti, aşağıdaki özellikler ile birlikte Pydantic modelleri için editör desteğini güçlendirir:
@ -145,21 +119,13 @@ Halbuki, aynı editör desteğini, <a href="https://www.jetbrains.com/pycharm/"
* arama
* arama
* inceleme
* inceleme
///
## Modeli Kullanalım
## Modeli Kullanalım
Fonksiyon içerisinde direkt olarak modelin tüm özelliklerine erişebilirsiniz:
Fonksiyon içerisinde direkt olarak modelin tüm özelliklerine erişebilirsiniz:
=== "Python 3.10+"
{* ../../docs_src/body/tutorial002_py310.py *}
```Python hl_lines="19"
{!> ../../../docs_src/body/tutorial002_py310.py!}
```
=== "Python 3.8+"
```Python hl_lines="21"
{!> ../../../docs_src/body/tutorial002.py!}
```
## İstek Gövdesi + Yol Parametreleri
## İstek Gövdesi + Yol Parametreleri
@ -167,17 +133,7 @@ Yol parametrelerini ve istek gövdesini aynı anda tanımlayabilirsiniz.
**FastAPI**, yol parametreleri ile eşleşen fonksiyon parametrelerinin **yol kısmından elde edileceklerinin** ve Pydantic modelleri olarak tanımlanan fonksiyon parametrelerinin **istek gövdesinden elde edileceklerinin** bilincindedir.
**FastAPI**, yol parametreleri ile eşleşen fonksiyon parametrelerinin **yol kısmından elde edileceklerinin** ve Pydantic modelleri olarak tanımlanan fonksiyon parametrelerinin **istek gövdesinden elde edileceklerinin** bilincindedir.
Fonksiyon parametreleri şu şekilde ayırt edilecektir:
Fonksiyon parametreleri şu şekilde ayırt edilecektir:
@ -203,7 +149,8 @@ Fonksiyon parametreleri şu şekilde ayırt edilecektir:
* Eğer parametre, **tekil tipten** (`int`, `float`, `str`, `bool`, vb. gibi) ise **sorgu** parametresi olarak yorumlanacaktır.
* Eğer parametre, **tekil tipten** (`int`, `float`, `str`, `bool`, vb. gibi) ise **sorgu** parametresi olarak yorumlanacaktır.
* Eğer parametre, bir **Pydantic modeli** ise istek **gövdesi** olarak yorumlanacaktır.
* Eğer parametre, bir **Pydantic modeli** ise istek **gövdesi** olarak yorumlanacaktır.
!!! note "Not"
/// note | Not
FastAPI, `q` değerinin zorunlu olmadığını `= None` varsayılan değerini aldığı için fark edecektir.
FastAPI, `q` değerinin zorunlu olmadığını `= None` varsayılan değerini aldığı için fark edecektir.
`Union[str, None]` kısmındaki `Union` anahtar kelimesi FastAPI tarafından kullanılmamasına rağmen kullandığınız editörün size daha iyi destek vermesini ve hataları belirlemesini sağlayacaktır.
`Union[str, None]` kısmındaki `Union` anahtar kelimesi FastAPI tarafından kullanılmamasına rağmen kullandığınız editörün size daha iyi destek vermesini ve hataları belirlemesini sağlayacaktır.