Відповідь - зміна коду статусу¶
🌐 Переклад ШІ та людьми
Цей переклад виконано ШІ під керівництвом людей. 🤝
Можливі помилки через неправильне розуміння початкового змісту або неприродні формулювання тощо. 🤖
Ви можете покращити цей переклад, допомігши нам краще спрямовувати AI LLM.
Ймовірно, ви вже читали, що можна встановити типовий код статусу відповіді.
Але інколи потрібно повернути інший код статусу, ніж типовий.
Випадок використання¶
Наприклад, уявімо, що ви хочете за замовчуванням повертати код статусу HTTP «OK» 200.
Але якщо даних не існувало, ви хочете створити їх і повернути код статусу HTTP «CREATED» 201.
Водночас ви все одно хочете мати змогу фільтрувати та перетворювати повернені дані за допомогою response_model.
Для таких випадків ви можете використати параметр Response.
Використовуйте параметр Response¶
Ви можете оголосити параметр типу Response у своїй функції операції шляху (так само, як для кукі та заголовків).
Потім ви можете встановити 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]
Після цього ви можете повернути будь-який потрібний об'єкт, як зазвичай (dict, модель бази даних тощо).
І якщо ви оголосили response_model, він усе одно буде використаний для фільтрації та перетворення поверненого об'єкта.
FastAPI використає цей тимчасовий об'єкт відповіді, щоб отримати код статусу (а також кукі та заголовки), і помістить їх у фінальну відповідь, що містить повернуте вами значення, відфільтроване за допомогою response_model.
Ви також можете оголосити параметр Response у залежностях і встановлювати там код статусу. Але майте на увазі: останнє встановлене значення матиме пріоритет.