Отправка и получение заголовков

Последнее обновление: 06.09.2022

Отправка заголовков

Для отправки заголовка в конструктор класса Response или его наследников параметру headers передается словарь, где ключи представляют названия заголовков:

from fastapi import FastAPI, Response

app = FastAPI()

@app.get("/")
def root():
    data = "Hello METANIT.COM"
    return Response(content=data, media_type="text/plain", headers={"Secret-Code" : "123459"})

Для примера в данном случае клиенту отправляется кастомный заголовок "Secret-Code" со значением "123459":

Класс Response и отправка заголовков клиенту в веб-приложении на FastAPI и Python

Также можно задать заголовки с помощью атрибута headers, который есть у класса Response и его наследников. Данный атрибут фактически представляет словарь, где ключи - названия заголовков:

from fastapi import FastAPI, Response

app = FastAPI()


@app.get("/")
def root(response: Response):
    response.headers["Secret-Code"] = "123459"
    return {"message": "Hello METANIT.COM"}

При данном подходе объект Response явным образом передается в функцию-обработчик через параметр.

Получение заголовков

Для получения заголовков запроса применяется класс fastapi.Header. Например, получим заголовок User-Agent:

from fastapi import FastAPI, Header

app = FastAPI()


@app.get("/")
def root(user_agent: str = Header()):
    return {"User-Agent": user_agent}

При этом параметр функции, в который получаем значение заголовка, должен называться как и заголовок за тем исключением, что вместо дефиса применяется прочерк: параметр "user_agent" соответствует заголовку "User-Agent".

получение заголовков в веб-приложении на fastApi и python

Но в запросе может отсутствовать нужный заголовок. В этом случае мы можем установить для него значение по умолчанию, например, None

from fastapi import FastAPI, Header

app = FastAPI()


@app.get("/")
def root(secret_code: str | None = Header(default=None)):
    return {"Secret-Code": secret_code}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850