Sobes.tech
Junior — Middle
64

Каким образом реализуются посредники (middleware) в FastAPI и какую роль они выполняют в обработке запросов?

Компании, где спрашивали
Медси

Ответ от нейросети

sobes.tech AI

В FastAPI посредники (middleware) реализуются как классы или функции, которые оборачивают обработку HTTP-запросов и ответов, позволяя выполнять дополнительную логику до и после основного обработчика.

Middleware принимает объект запроса, может изменить его или выполнить какие-то действия (например, логирование, аутентификацию, обработку CORS), затем передает управление дальше по цепочке, и после получения ответа может его модифицировать.

Пример простого middleware в FastAPI:

from fastapi import FastAPI, Request
from starlette.middleware.base import BaseHTTPMiddleware

app = FastAPI()

class SimpleMiddleware(BaseHTTPMiddleware):
    async def dispatch(self, request: Request, call_next):
        print(f"Запрос: {request.method} {request.url}")  # логируем запрос
        response = await call_next(request)  # передаем управление дальше
        response.headers["X-Custom-Header"] = "Middleware"
        return response

app.add_middleware(SimpleMiddleware)

Таким образом, middleware в FastAPI служат для внедрения общей логики, которая должна применяться ко всем или большинству запросов, без необходимости дублировать код в каждом обработчике.