Кукі у відповіді¶
🌐 Переклад ШІ та людьми
Цей переклад виконано ШІ під керівництвом людей. 🤝
Можливі помилки через неправильне розуміння початкового змісту або неприродні формулювання тощо. 🤖
Ви можете покращити цей переклад, допомігши нам краще спрямовувати AI LLM.
Використовуйте параметр Response¶
Ви можете оголосити параметр типу Response у вашій функції операції шляху.
Потім ви можете встановити кукі в цьому тимчасовому об'єкті відповіді.
from fastapi import FastAPI, Response
app = FastAPI()
@app.post("/cookie-and-object/")
def create_cookie(response: Response):
response.set_cookie(key="fakesession", value="fake-cookie-session-value")
return {"message": "Come to the dark side, we have cookies"}
Після цього ви можете повернути будь-який потрібний об'єкт, як зазвичай (наприклад, dict, модель бази даних тощо).
І якщо ви оголосили response_model, він усе одно буде використаний для фільтрації та перетворення об'єкта, який ви повернули.
FastAPI використає цю тимчасову відповідь, щоб витягнути кукі (а також заголовки та код статусу) і помістить їх у фінальну відповідь, що містить значення, яке ви повернули, відфільтроване будь-якою response_model.
Ви також можете оголосити параметр Response у залежностях і встановлювати в них кукі (і заголовки).
Повертайте Response безпосередньо¶
Ви також можете створювати кукі, повертаючи Response безпосередньо у вашому коді.
Для цього ви можете створити відповідь, як описано в Повернути відповідь безпосередньо.
Потім встановіть у ньому кукі і поверніть його:
from fastapi import FastAPI
from fastapi.responses import JSONResponse
app = FastAPI()
@app.post("/cookie/")
def create_cookie():
content = {"message": "Come to the dark side, we have cookies"}
response = JSONResponse(content=content)
response.set_cookie(key="fakesession", value="fake-cookie-session-value")
return response
Порада
Майте на увазі, що якщо ви повертаєте відповідь безпосередньо замість використання параметра Response, FastAPI поверне її напряму.
Тому вам потрібно переконатися, що ваші дані мають коректний тип. Наприклад, сумісні з JSON, якщо ви повертаєте JSONResponse.
А також що ви не надсилаєте дані, які мали б бути відфільтровані за допомогою response_model.
Більше інформації¶
Технічні деталі
Ви також можете використати from starlette.responses import Response або from starlette.responses import JSONResponse.
FastAPI надає ті самі starlette.responses як fastapi.responses лише для зручності для вас, розробника. Але більшість доступних відповідей надходять безпосередньо зі Starlette.
І оскільки Response часто використовується для встановлення заголовків і кукі, FastAPI також надає його як fastapi.Response.
Щоб побачити всі доступні параметри та опції, перегляньте документацію в Starlette.