Ana içeriğe geç

Response Status Code

🌐 Translation by AI and humans

This translation was made by AI guided by humans. 🤝

It could have mistakes of misunderstanding the original meaning, or looking unnatural, etc. 🤖

You can improve this translation by helping us guide the AI LLM better.

English version

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.
from fastapi import FastAPI

app = FastAPI()


@app.post("/items/", status_code=201)
async def create_item(name: str):
    return {"name": name}

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.

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:

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

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.

İ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:

from fastapi import FastAPI

app = FastAPI()


@app.post("/items/", status_code=201)
async def create_item(name: str):
    return {"name": name}

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.

from fastapi import FastAPI, status

app = FastAPI()


@app.post("/items/", status_code=status.HTTP_201_CREATED)
async def create_item(name: str):
    return {"name": name}

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

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 içinde, burada tanımladığınız varsayılanın dışında farklı bir status code nasıl döndüreceğinizi göreceksiniz.