Перейти до змісту

Заголовки відповіді

🌐 Переклад ШІ та людьми

Цей переклад виконано ШІ під керівництвом людей. 🤝

Можливі помилки через неправильне розуміння початкового змісту або неприродні формулювання тощо. 🤖

Ви можете покращити цей переклад, допомігши нам краще спрямовувати AI LLM.

Англійська версія

Використовуйте параметр Response

Ви можете оголосити параметр типу Response у вашій функції операції шляху (так само, як і для кукі).

Потім ви можете встановлювати заголовки в цьому тимчасовому обʼєкті відповіді.

from fastapi import FastAPI, Response

app = FastAPI()


@app.get("/headers-and-object/")
def get_headers(response: Response):
    response.headers["X-Cat-Dog"] = "alone in the world"
    return {"message": "Hello World"}

Далі ви можете повернути будь-який потрібний обʼєкт, як зазвичай (наприклад, dict, модель бази даних тощо).

Якщо ви оголосили response_model, його все одно буде використано для фільтрації та перетворення поверненого обʼєкта.

FastAPI використає цей тимчасовий обʼєкт відповіді, щоб витягти заголовки (а також кукі та код статусу) і помістить їх у кінцеву відповідь, яка міститиме повернуте вами значення, відфільтроване будь-яким response_model.

Також ви можете оголосити параметр Response у залежностях і встановлювати в них заголовки (та кукі).

Поверніть Response безпосередньо

Ви також можете додавати заголовки, коли повертаєте Response безпосередньо.

Створіть відповідь, як описано в Повернення Response безпосередньо, і передайте заголовки як додатковий параметр:

from fastapi import FastAPI
from fastapi.responses import JSONResponse

app = FastAPI()


@app.get("/headers/")
def get_headers():
    content = {"message": "Hello World"}
    headers = {"X-Cat-Dog": "alone in the world", "Content-Language": "en-US"}
    return JSONResponse(content=content, headers=headers)

Технічні деталі

Ви також можете використати from starlette.responses import Response або from starlette.responses import JSONResponse.

FastAPI надає ті самі starlette.responses як fastapi.responses просто для зручності для вас, розробника. Але більшість доступних типів відповідей походять безпосередньо зі Starlette.

Оскільки Response часто використовують для встановлення заголовків і кукі, FastAPI також надає його як fastapi.Response.

Власні заголовки

Майте на увазі, що власні закриті заголовки можна додавати за допомогою префікса X-.

Але якщо у вас є власні заголовки, які клієнт у браузері має бачити, вам потрібно додати їх у вашу конфігурацію CORS (докладніше в CORS (Cross-Origin Resource Sharing)), використовуючи параметр expose_headers, задокументований у документації Starlette щодо CORS.