33
44from fastapi import APIRouter , FastAPI
55from prometheus_fastapi_instrumentator import PrometheusFastApiInstrumentator
6+ from starlette .middleware .trustedhost import TrustedHostMiddleware
67from starlette .staticfiles import StaticFiles
78
89from .conf import settings
@@ -30,7 +31,9 @@ def setup_prometheus(app: FastAPI) -> None:
3031 name = settings .PROMETHEUS_NAME ,
3132 tags = ["Метрики" ]
3233 )
33- # TODO: остальные настройки в settings
34+ # TODO:
35+ # остальные настройки в settings
36+ # создать функцию типа get_prefixed_url
3437
3538
3639def include_routers (app : FastAPI ) -> None :
@@ -39,6 +42,18 @@ def include_routers(app: FastAPI) -> None:
3942 app .include_router (router )
4043
4144
45+ def setup_middlewares (app : FastAPI ) -> None :
46+ for middleware in settings .MIDDLEWARES :
47+ print ("===> middleware" , middleware )
48+ app .add_middleware (middleware )
49+ # TODO: продумать:
50+ # преднастроенные миддлварь, которые задаются в строковом формате и имеют настройки ИЛИ не имеют параметров инициализации
51+ # callabe миддвари, с преднастроенными при помощи partial параметрами напр:
52+ # MIDDLEWARES = [
53+ # partial(TrustedHostMiddleware, allowed_hosts=["localhost", "*.example.com"])
54+ # ]
55+
56+
4257application = FastAPI (
4358 title = settings .API_TITLE ,
4459 summary = settings .API_SUMMARY ,
@@ -52,3 +67,4 @@ def include_routers(app: FastAPI) -> None:
5267application .include_router = partial (application .include_router , prefix = settings .API_PREFIX )
5368include_routers (application )
5469setup_prometheus (application )
70+ setup_middlewares (application )
0 commit comments