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.1 KiB

Ek Durum Kodları

FastAPI varsayılan olarak, yol operasyonu ile döndürdüğünüz içeriği JSONResponse'ın içerisinde yerleştirerek yanıtları döndürecektir.

Varsayılan durum kodunu veya yol operasyonu ile belirlediğiniz durum kodunu kullanacaktır.

Ek Durum Kodları

Varsayılan durum kodunun dışında ek durum kodları döndürmek istiyorsanız, bunu doğrudan bir Response döndürerek yapabilirsiniz, örneğin bir JSONResponse ile ek durum kodunu doğrudan belirleyebilirsiniz.

Örneğin, öğeleri güncellemeye izin veren ve başarılı olduğunda her şeyin yolunda olduğunu belirten "200" HTTP durum kodunu döndüren bir yol operasyonu oluşturmak istediğinizi varsayalım.

Aynı zamanda, yeni öğeler kabul etmek istiyorsunuz ve bu öğereler mevcut değilse öğeleri oluşturmak ve "Oluşturuldu" anlamına gelen 201 HTTP durum kodunu döndürmek istiyorsunuz.

Bunun için JSONResponse'ı projenize dahil edin ve içeriğinizi doğrudan JSONResponse içerisinde istediğiniz status_code ile birlikte yanıt olarak döndürün:

=== "Python 3.10+"

```Python hl_lines="4  25"
{!> ../../../docs_src/additional_status_codes/tutorial001_an_py310.py!}
```

=== "Python 3.9+"

```Python hl_lines="4  25"
{!> ../../../docs_src/additional_status_codes/tutorial001_an_py39.py!}
```

=== "Python 3.8+"

```Python hl_lines="4  26"
{!> ../../../docs_src/additional_status_codes/tutorial001_an.py!}
```

=== "Python 3.10+ non-Annotated"

!!! tip "İpucu"
    Mümkün mertebe 'Annotated' sınıfını kullanmaya çalışın.

```Python hl_lines="2  23"
{!> ../../../docs_src/additional_status_codes/tutorial001_py310.py!}
```

=== "Python 3.8+ non-Annotated"

!!! tip "İpucu"
    Mümkün mertebe 'Annotated' sınıfını kullanmaya çalışın.

```Python hl_lines="4  25"
{!> ../../../docs_src/additional_status_codes/tutorial001.py!}
```

!!! warning "Uyarı" Yukarıdaki örnekte olduğu gibi bir Response döndürdüğünüzde, doğrudan döndürülecektir.

Bu yanıt herhangi bir modelle dönüştürülme işlemine tabi tutulmayacaktır.

Yanıtın, istediğiniz veriye sahip olduğundan ve (eğer `JSONResponse` kullanıyorsanız) değerlerin geçerli JSON olduğundan emin olun.

!!! note "Teknik Detaylar" Projenize dahil etmek için from starlette.responses import JSONResponse kullanabilirsiniz.

**FastAPI**, geliştiricilere kolaylık sağlamak amacıyla `starlette.responses`'ı `fastapi.responses` olarak sağlar. Ancak mevcut yanıtların çoğu doğrudan Starlette'den gelir. Aynı durum `status` için de geçerlidir.

OpenAPI ve API Dokümantasyonu

Eğer ek durum kodları ve yanıtlarını doğrudan döndürürseniz, bunlar OpenAPI şemasına (API belgeleri) dahil edilmeyecektir, çünkü FastAPI'ın önceden ne döndüreceğinizi bilmesi için bir yol yoktur.

Ancak Additional Responses{.internal-link target=_blank} sayfasında belirtildiği gibi "ek yanıtlar" kullanarak, bunu kodunuzda dokümante edebilirsiniz.