From 6c9ae564538745eec509bacffc563d23b74bec69 Mon Sep 17 00:00:00 2001 From: Rewrite0 Date: Thu, 15 Jun 2023 21:44:58 +0800 Subject: [PATCH] Revert "feat: mount static files for root router" --- Dockerfile | 1 + backend/src/main.py | 26 ++++-------------------- backend/src/module/api/web.py | 37 +++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 22 deletions(-) diff --git a/Dockerfile b/Dockerfile index 58a287a0..c2e996b1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -37,6 +37,7 @@ RUN apk add --no-cache \ pip install --no-cache-dir -r requirements.txt && \ # Unzip WebUI \ unzip dist.zip && \ + mv dist templates && \ # Add user addgroup -S ab -g 911 && \ adduser -S ab -G ab -h /ab -s /bin/bash -u 911 && \ diff --git a/backend/src/main.py b/backend/src/main.py index 4fcb1c54..cbc0915f 100644 --- a/backend/src/main.py +++ b/backend/src/main.py @@ -1,12 +1,10 @@ import logging import uvicorn -from fastapi import FastAPI, Request -from fastapi.responses import HTMLResponse, RedirectResponse -from fastapi.staticfiles import StaticFiles -from fastapi.templating import Jinja2Templates +from fastapi import FastAPI from module.api import v1 from module.api.proxy import router as proxy_router +from module.api.web import router as web_router from module.conf import settings, setup_logger from starlette.types import ASGIApp @@ -27,27 +25,11 @@ uvicorn_logging_config = { } -def mount_dist(app: ASGIApp): - from module.conf import VERSION - - if VERSION != "DEV_VERSION": - app.mount("/", StaticFiles(directory="dist", html=True), name="dist") - templates = Jinja2Templates(directory="dist") - @app.get("/", response_class=HTMLResponse, tags=["html"]) - def index(request: Request): - return templates.TemplateResponse("index.html", {"request": request}) - else: - @app.get("/", status_code=302, tags=["html"]) - def index(): - return RedirectResponse("/docs") - def create_app() -> ASGIApp: app = FastAPI() - # mount dist - mount_dist(app) - - # mount router + # mount routers + app.include_router(web_router) app.include_router(proxy_router) app.include_router(v1, prefix="/api") diff --git a/backend/src/module/api/web.py b/backend/src/module/api/web.py index e69de29b..1a4217f9 100644 --- a/backend/src/module/api/web.py +++ b/backend/src/module/api/web.py @@ -0,0 +1,37 @@ +from fastapi import APIRouter, Request +from fastapi.responses import FileResponse, HTMLResponse, RedirectResponse +from fastapi.staticfiles import StaticFiles +from fastapi.templating import Jinja2Templates + +from module.conf import VERSION + +router = APIRouter() + +if VERSION != "DEV_VERSION": + router.mount("/assets", StaticFiles(directory="templates/assets"), name="assets") + templates = Jinja2Templates(directory="templates") + + # Resource + @router.get("/favicon.svg", tags=["html"]) + def favicon(): + return FileResponse("templates/favicon.svg") + + @router.get("/AutoBangumi.svg", tags=["html"]) + def logo(): + return FileResponse("templates/AutoBangumi.svg") + + @router.get("/favicon-light.svg", tags=["html"]) + def favicon_light(): + return FileResponse("templates/favicon-light.svg") + + # HTML Response + @router.get("/{full_path:path}", response_class=HTMLResponse, tags=["html"]) + def index(request: Request): + context = {"request": request} + return templates.TemplateResponse("index.html", context) + +else: + + @router.get("/", status_code=302, tags=["html"]) + def index(): + return RedirectResponse("/docs")