diff --git a/src/modules/web_app/app.py b/src/modules/web_app/app.py index ba74993..fd7ca61 100644 --- a/src/modules/web_app/app.py +++ b/src/modules/web_app/app.py @@ -1,5 +1,4 @@ from fastapi import FastAPI -from fastapi.staticfiles import StaticFiles from core.mongo import mongo_manager from core.redis import redis_manager @@ -7,6 +6,7 @@ from core.broker import broker from .auth.authx import auth from .views import routes +from .utils.static import SPAStaticFiles def get_app() -> FastAPI: @@ -19,7 +19,7 @@ def get_app() -> FastAPI: app.mount( "/", - StaticFiles( + SPAStaticFiles( directory="modules/web_app/frontend", html=True ), diff --git a/src/modules/web_app/utils/static.py b/src/modules/web_app/utils/static.py new file mode 100644 index 0000000..5eab2af --- /dev/null +++ b/src/modules/web_app/utils/static.py @@ -0,0 +1,15 @@ +from fastapi.staticfiles import StaticFiles + +from starlette.responses import Response +from starlette.exceptions import HTTPException + + +class SPAStaticFiles(StaticFiles): + async def get_response(self, path: str, scope) -> Response: + try: + return await super().get_response(path, scope) + except HTTPException: + if path.startswith("/api"): + raise + + return await super().get_response("index.html", scope)