Response - Status Code Değiştirme¶
🌐 Yapay Zekâ ve İnsanlar Tarafından Çeviri
Bu çeviri, insanlar tarafından yönlendirilen bir yapay zekâ ile oluşturuldu. 🤝
Orijinal anlamın yanlış anlaşılması ya da kulağa doğal gelmeme gibi hatalar içerebilir. 🤖
Yapay zekâyı daha iyi yönlendirmemize yardımcı olarak bu çeviriyi iyileştirebilirsiniz.
Muhtemelen daha önce varsayılan bir Response Status Code ayarlayabileceğinizi okumuşsunuzdur.
Ancak bazı durumlarda, varsayılandan farklı bir status code döndürmeniz gerekir.
Kullanım senaryosu¶
Örneğin, varsayılan olarak "OK" 200 HTTP status code'u döndürmek istediğinizi düşünün.
Ama veri mevcut değilse onu oluşturmak ve "CREATED" 201 HTTP status code'u döndürmek istiyorsunuz.
Aynı zamanda, döndürdüğünüz veriyi bir response_model ile filtreleyip dönüştürebilmeyi de sürdürmek istiyorsunuz.
Bu tür durumlarda bir Response parametresi kullanabilirsiniz.
Bir Response parametresi kullanın¶
Path operation function içinde Response tipinde bir parametre tanımlayabilirsiniz (cookie ve header'lar için yapabildiğiniz gibi).
Ardından bu geçici (temporal) Response nesnesi üzerinde status_code değerini ayarlayabilirsiniz.
from fastapi import FastAPI, Response, status
app = FastAPI()
tasks = {"foo": "Listen to the Bar Fighters"}
@app.put("/get-or-create-task/{task_id}", status_code=200)
def get_or_create_task(task_id: str, response: Response):
if task_id not in tasks:
tasks[task_id] = "This didn't exist before"
response.status_code = status.HTTP_201_CREATED
return tasks[task_id]
Sonrasında, normalde yaptığınız gibi ihtiyacınız olan herhangi bir nesneyi döndürebilirsiniz (dict, bir veritabanı modeli, vb.).
Ve eğer bir response_model tanımladıysanız, döndürdüğünüz nesneyi filtrelemek ve dönüştürmek için yine kullanılacaktır.
FastAPI, status code'u (ayrıca cookie ve header'ları) bu geçici (temporal) response'tan alır ve response_model ile filtrelenmiş, sizin döndürdüğünüz değeri içeren nihai response'a yerleştirir.
Ayrıca Response parametresini dependency'lerde de tanımlayıp status code'u orada ayarlayabilirsiniz. Ancak unutmayın, en son ayarlanan değer geçerli olur.