РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
21 of 307 menu

Метод add_middleware

Метод add_middleware применяется к приложению FastAPI и добавляет промежуточное ПО (middleware), которое обрабатывает каждый запрос до и после основного обработчика. Первым параметром передаётся класс middleware, вторым - его параметры. Middleware вызывается для всех маршрутов приложения.

Синтаксис

app.add_middleware(middleware_class, **options)

Пример

Давайте добавим middleware CORSMiddleware для разрешения кросс-доменных запросов:

from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=['*'], allow_methods=['*'], allow_headers=['*'], ) @app.get('/') def index(): return {'text': 'hello'}

Результат выполнения кода для адреса /:

{"text": "hello"}

Пример

Давайте добавим собственный middleware-класс, который замеряет время обработки запроса:

import time from fastapi import FastAPI app = FastAPI() class TimerMiddleware: def __init__(self, app): self.app = app async def __call__(self, scope, receive, send): start = time.time() await self.app(scope, receive, send) print('time:', time.time() - start) app.add_middleware(TimerMiddleware) @app.get('/') def index(): return {'text': 'hello'}

Результат выполнения кода после запроса на адрес /:

time: 0.00042

Пример

Давайте добавим middleware GZipMiddleware для сжатия ответов:

from fastapi import FastAPI from fastapi.middleware.gzip import GZipMiddleware app = FastAPI() app.add_middleware(GZipMiddleware, minimum_size=1000) @app.get('/') def index(): return {'text': 'abcde' * 500}

Результат выполнения кода:

{"text": "abcdeabcdeabcde..."}

Смотрите также

  • метод middleware,
    который является декоратором для добавления middleware
  • метод add_exception_handler,
    который добавляет обработчик исключений
  • метод include_router,
    который подключает роутер к приложению
  • метод mount,
    который монтирует подприложение по указанному пути
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить