Files
fastapi/docs/tr/docs/tutorial/response-status-code.md
2026-01-31 19:22:34 +00:00

4.5 KiB
Raw Blame History

Response Status Code

Bir response model tanımlayabildiğiniz gibi, herhangi bir path operation içinde status_code parametresiyle response için kullanılacak HTTP status code'u da belirtebilirsiniz:

  • @app.get()
  • @app.post()
  • @app.put()
  • @app.delete()
  • vb.

{* ../../docs_src/response_status_code/tutorial001_py39.py hl[6] *}

/// note | Not

status_code'un, "decorator" metodunun (get, post, vb.) bir parametresi olduğuna dikkat edin. Tüm parametreler ve body gibi, sizin path operation function'ınızın bir parametresi değildir.

///

status_code parametresi, HTTP status code'u içeren bir sayı alır.

/// info | Bilgi

Alternatif olarak status_code, Python'un http.HTTPStatus'ı gibi bir IntEnum da alabilir.

///

Bu sayede:

  • Response'da o status code döner.
  • OpenAPI şemasında (dolayısıyla kullanıcı arayüzlerinde de) bu şekilde dokümante edilir:

/// note | Not

Bazı response code'lar (bir sonraki bölümde göreceğiz) response'un bir body'ye sahip olmadığını belirtir.

FastAPI bunu bilir ve response body olmadığını söyleyen OpenAPI dokümantasyonunu üretir.

///

HTTP status code'lar hakkında

/// note | Not

HTTP status code'ların ne olduğunu zaten biliyorsanız, bir sonraki bölüme geçin.

///

HTTP'de, response'un bir parçası olarak 3 basamaklı sayısal bir status code gönderirsiniz.

Bu status code'ların tanınmalarını sağlayan bir isimleri de vardır; ancak önemli olan kısım sayıdır.

Kısaca:

  • 100 - 199 "Information" içindir. Doğrudan nadiren kullanırsınız. Bu status code'lara sahip response'lar body içeremez.
  • 200 - 299 "Successful" response'lar içindir. En sık kullanacağınız aralık budur.
    • 200, varsayılan status code'dur ve her şeyin "OK" olduğunu ifade eder.
    • Başka bir örnek 201 ("Created") olabilir. Genellikle veritabanında yeni bir kayıt oluşturduktan sonra kullanılır.
    • Özel bir durum ise 204 ("No Content")'tür. Client'a döndürülecek içerik olmadığında kullanılır; bu nedenle response body olmamalıdır.
  • 300 - 399 "Redirection" içindir. Bu status code'lara sahip response'lar, 304 ("Not Modified") hariç, body içerebilir de içermeyebilir de; 304 kesinlikle body içermemelidir.
  • 400 - 499 "Client error" response'ları içindir. Muhtemelen en sık kullanacağınız ikinci aralık budur.
    • Örneğin 404, "Not Found" response'u içindir.
    • Client kaynaklı genel hatalar için doğrudan 400 kullanabilirsiniz.
  • 500 - 599 server hataları içindir. Neredeyse hiç doğrudan kullanmazsınız. Uygulama kodunuzun bir bölümünde ya da server'da bir şeyler ters giderse, otomatik olarak bu status code'lardan biri döner.

/// tip | İpucu

Her bir status code hakkında daha fazla bilgi almak ve hangi kodun ne için kullanıldığını görmek için HTTP status code'lar hakkında MDN dokümantasyonuna göz atın.

///

İsimleri hatırlamak için kısayol

Önceki örneğe tekrar bakalım:

{* ../../docs_src/response_status_code/tutorial001_py39.py hl[6] *}

201, "Created" için kullanılan status code'dur.

Ancak bu kodların her birinin ne anlama geldiğini ezberlemek zorunda değilsiniz.

fastapi.status içindeki kolaylık değişkenlerini (convenience variables) kullanabilirsiniz.

{* ../../docs_src/response_status_code/tutorial002_py39.py hl[1,6] *}

Bunlar sadece kolaylık sağlar; aynı sayıyı taşırlar. Ancak bu şekilde editörün autocomplete özelliğiyle kolayca bulabilirsiniz:

/// note | Teknik Detaylar

from starlette import status da kullanabilirsiniz.

FastAPI, geliştirici olarak size kolaylık olsun diye starlette.status'u fastapi.status olarak da sunar. Ancak bu aslında doğrudan Starlette'den gelir.

///

Varsayılanı değiştirmek

Daha sonra, İleri Düzey Kullanıcı Kılavuzu{.internal-link target=_blank} içinde, burada tanımladığınız varsayılanın dışında farklı bir status code nasıl döndüreceğinizi göreceksiniz.