feat(static-mount): integrate frontend (13 pages) into FastAPI app
This commit is contained in:
+12
@@ -14,10 +14,13 @@ from __future__ import annotations
|
|||||||
import logging
|
import logging
|
||||||
from contextlib import asynccontextmanager
|
from contextlib import asynccontextmanager
|
||||||
|
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
from fastapi import FastAPI, Request, status
|
from fastapi import FastAPI, Request, status
|
||||||
from fastapi.exceptions import RequestValidationError
|
from fastapi.exceptions import RequestValidationError
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
from fastapi.responses import JSONResponse
|
from fastapi.responses import JSONResponse
|
||||||
|
from fastapi.staticfiles import StaticFiles
|
||||||
from sqlalchemy import text
|
from sqlalchemy import text
|
||||||
from sqlalchemy.exc import SQLAlchemyError
|
from sqlalchemy.exc import SQLAlchemyError
|
||||||
from starlette.exceptions import HTTPException as StarletteHTTPException
|
from starlette.exceptions import HTTPException as StarletteHTTPException
|
||||||
@@ -190,6 +193,15 @@ def create_app() -> FastAPI:
|
|||||||
app.include_router(tags.router, prefix="/api/v1")
|
app.include_router(tags.router, prefix="/api/v1")
|
||||||
app.include_router(dashboard.router, prefix="/api/v1")
|
app.include_router(dashboard.router, prefix="/api/v1")
|
||||||
|
|
||||||
|
# === Static Files (Frontend) ===
|
||||||
|
# Mount app/webui/ on root AFTER all routers, so /api/v1/* still matches first.
|
||||||
|
# StaticFiles mit html=True servt index.html on `/` und alle .html files direkt.
|
||||||
|
webui_dir = Path(__file__).parent / "webui"
|
||||||
|
if webui_dir.exists():
|
||||||
|
app.mount("/", StaticFiles(directory=str(webui_dir), html=True), name="webui")
|
||||||
|
else:
|
||||||
|
logger.warning("webui directory not found at %s — frontend not served", webui_dir)
|
||||||
|
|
||||||
return app
|
return app
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user