Skip to content

Commit 5eebeeb

Browse files
middlwares
1 parent 46a6a02 commit 5eebeeb

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

fastapi_django/app.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
from fastapi import APIRouter, FastAPI
55
from prometheus_fastapi_instrumentator import PrometheusFastApiInstrumentator
6+
from starlette.middleware.trustedhost import TrustedHostMiddleware
67
from starlette.staticfiles import StaticFiles
78

89
from .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

3639
def 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+
4257
application = FastAPI(
4358
title=settings.API_TITLE,
4459
summary=settings.API_SUMMARY,
@@ -52,3 +67,4 @@ def include_routers(app: FastAPI) -> None:
5267
application.include_router = partial(application.include_router, prefix=settings.API_PREFIX)
5368
include_routers(application)
5469
setup_prometheus(application)
70+
setup_middlewares(application)

fastapi_django/conf/global_settings.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,5 @@
1010
PROMETHEUS_ENABLED = False
1111
PROMETHEUS_SHOULD_GZIP = True
1212
PROMETHEUS_NAME = "prometheus_metrics"
13+
14+
TRUSTED_HOST_MIDDLEWARE_ALLOWED_HOSTS = ["*"]

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ check_untyped_defs = true
77

88
[tool.poetry]
99
name = "fastapi-django"
10-
version = "0.2.6"
10+
version = "0.2.9"
1111
description = ""
1212
authors = ["albertalexandrov <[email protected]>"]
1313
packages = [{include = "fastapi_django"}]

0 commit comments

Comments
 (0)