Полное руководство по передаче заголовков в FastAPI

FastAPI — это современная, быстрая (высокопроизводительная) веб-платформа для создания API с помощью Python. Одним из распространенных требований при работе с API является возможность передавать заголовки в HTTP-запросах. В этой статье мы рассмотрим различные методы передачи заголовков в FastAPI, а также примеры кода.

Метод 1: прямое использование заголовков запроса
Самый простой способ передать заголовки в FastAPI — получить к ним доступ непосредственно из объекта запроса. Вот пример:

from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def get_items(user_agent: str = Header(None)):
    return {"User-Agent": user_agent}

В приведенном выше коде мы определяем маршрут /items/, который ожидает заголовок User-Agent. Декоратор параметра Headerпозволяет нам получить доступ к значению заголовка.

Метод 2: использование внедрения зависимостей
FastAPI поддерживает внедрение зависимостей, что позволяет нам объявлять зависимости, которые можно внедрить в функции маршрута. Мы можем использовать эту функцию для передачи заголовков. Вот пример:

from fastapi import FastAPI, Depends, Header
app = FastAPI()
async def get_user_agent(user_agent: str = Header(None)):
    return user_agent
@app.get("/items/")
async def get_items(user_agent: str = Depends(get_user_agent)):
    return {"User-Agent": user_agent}

В приведенном выше коде мы определяем функцию зависимости get_user_agent, которая получает значение заголовка User-Agent. Затем мы можем использовать декоратор параметра Depends, чтобы внедрить это значение в нашу функцию маршрута.

Метод 3: использование пользовательских моделей заголовков
FastAPI позволяет нам определять собственные модели для представления заголовков. Этот подход обеспечивает лучшую проверку и проверку типов. Вот пример:

from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class UserAgent(BaseModel):
    user_agent: str
@app.get("/items/")
async def get_items(user_agent: UserAgent):
    return {"User-Agent": user_agent.user_agent}

В приведенном выше коде мы определяем модель UserAgentс помощью Pydantic, которая представляет заголовок User-Agent. FastAPI автоматически преобразует значение заголовка в определенный тип модели.

В этой статье мы рассмотрели несколько методов передачи заголовков в FastAPI. Мы рассмотрели прямой доступ к заголовкам, использование внедрения зависимостей и определение пользовательских моделей заголовков. В зависимости от вашего конкретного случая использования вы можете выбрать метод, который лучше всего соответствует вашим потребностям. Гибкость и простота использования FastAPI делают его мощной платформой для создания надежных API.

Не забывайте всегда проверять и очищать значения заголовков, чтобы обеспечить безопасность и целостность вашего API.

Реализуя эти методы передачи заголовков в FastAPI, вы можете улучшить функциональность своего API и обеспечить удобство работы для своих пользователей.