В FastAPI вы можете применить middleware к конкретному пути (роуту), используя функцию `add_middleware` и передавая ей объект FastAPI приложения и middleware.
Вот пример:
```python
from fastapi import FastAPI
from starlette.middleware import Middleware
from starlette.middleware.gzip import GZipMiddleware
app = FastAPI()
@app.get("/example", summary="Пример роута")
async def example_route():
return {"message": "Пример"}
middleware = [
Middleware(GZipMiddleware)
]
app.add_middleware(GZipMiddleware, exclude_path="/example")
app.add_middleware(GZipMiddleware, include_path="/example")
app.add_middleware(
GZipMiddleware,
include_path="/example",
exclude_path="/example/subpath"
)
```
Здесь мы оборачиваем FastAPI приложение (объект `app`) middleware с помощью `add_middleware`. Для применения middleware к конкретному роуту вы можете использовать аргументы `include_path` и `exclude_path`. В приведенном примере мы добавляем middleware GZipMiddleware для всех роутов, исключая путь "/example", и применяем middleware к пути "/example". Вы также можете использовать `add_middleware` несколько раз, чтобы применить middleware к различным путям.
Обратите внимание, что `add_middleware` добавляет middleware в цепочку middleware для всех обработчиков запросов. Если вы хотите применить middleware только к конкретному роуту, вы должны установить `exclude_path` для остальных роутов, чтобы они не применяли middleware.