विषय पर बढ़ें

Response - Status Code बदलें

🌐 एआई और मनुष्यों द्वारा किया गया अनुवाद

यह अनुवाद मनुष्यों के मार्गदर्शन में एआई द्वारा किया गया है। 🤝

इसमें मूल अर्थ को गलत समझने या अप्राकृतिक लगने आदि जैसी गलतियाँ हो सकती हैं। 🤖

आप हमें एआई LLM को बेहतर मार्गदर्शन करने में मदद करके इस अनुवाद को बेहतर बना सकते हैं।

अंग्रेज़ी संस्करण

आपने शायद पहले पढ़ा होगा कि आप एक default Response Status Code सेट कर सकते हैं।

लेकिन कुछ मामलों में आपको default से अलग status code लौटाना पड़ता है।

उपयोग का मामला

उदाहरण के लिए, कल्पना करें कि आप default रूप से "OK" 200 का HTTP status code लौटाना चाहते हैं।

लेकिन अगर data मौजूद नहीं था, तो आप उसे बनाना चाहते हैं, और "CREATED" 201 का HTTP status code लौटाना चाहते हैं।

लेकिन फिर भी आप response_model के साथ लौटाए गए data को filter और convert कर पाने में सक्षम रहना चाहते हैं।

ऐसे मामलों के लिए, आप Response parameter का उपयोग कर सकते हैं।

Response parameter का उपयोग करें

आप अपनी path operation function में Response type का parameter घोषित कर सकते हैं (जैसा कि आप cookies और headers के लिए कर सकते हैं)।

और फिर आप उस temporary response object में status_code सेट कर सकते हैं।

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]

और फिर आप अपनी ज़रूरत का कोई भी object लौटा सकते हैं, जैसा कि आप सामान्य रूप से करते हैं (एक dict, एक database model, आदि)।

और अगर आपने response_model घोषित किया है, तो यह आपके लौटाए गए object को filter और convert करने के लिए अभी भी उपयोग किया जाएगा।

FastAPI उस temporary response का उपयोग status code (साथ ही cookies और headers) निकालने के लिए करेगा, और उन्हें अंतिम response में डाल देगा जिसमें आपके द्वारा लौटाया गया value होगा, जिसे किसी भी response_model द्वारा filter किया गया होगा।

आप dependencies में भी Response parameter घोषित कर सकते हैं, और उनमें status code सेट कर सकते हैं। लेकिन ध्यान रखें कि आख़िरी बार जो सेट किया जाएगा, वही प्रभावी होगा।