4.5 KiB
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;304kesinlikle 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
400kullanabilirsiniz.
- Örneğin
500 - 599server 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.