feat(app): add frontend url configuration

This commit is contained in:
MingxuanGame
2025-08-12 09:01:10 +00:00
parent 0dd0d8f7ba
commit e70c197d65
6 changed files with 33 additions and 0 deletions

View File

@@ -67,6 +67,7 @@ class Settings(BaseSettings):
private_api_secret: str = "your_private_api_secret_here"
cors_urls: list[HttpUrl] = []
server_url: HttpUrl = HttpUrl("http://localhost:8000")
frontend_url: HttpUrl | None = None
# SignalR 设置
signalr_negotiate_timeout: int = 30

View File

@@ -6,6 +6,7 @@ from .auth import router as auth_router
from .fetcher import fetcher_router as fetcher_router
from .file import file_router as file_router
from .private import private_router as private_router
from .redirect import redirect_router as redirect_router
from .v2.router import router as api_v2_router
__all__ = [
@@ -14,5 +15,6 @@ __all__ = [
"fetcher_router",
"file_router",
"private_router",
"redirect_router",
"signalr_router",
]

23
app/router/redirect.py Normal file
View File

@@ -0,0 +1,23 @@
from __future__ import annotations
import urllib.parse
from app.config import settings
from fastapi import APIRouter, Request
from fastapi.responses import RedirectResponse
redirect_router = APIRouter(include_in_schema=False)
@redirect_router.get("/users/{user_id}")
@redirect_router.get("/u/{user_id}")
@redirect_router.get("/b/{beatmap_id}")
@redirect_router.get("/s/{beatmapset_id}")
@redirect_router.get("/beatmapsets/{path:path}")
@redirect_router.get("/multiplayer/rooms/{room_id}")
async def redirect(request: Request):
return RedirectResponse(
urllib.parse.urljoin(str(settings.frontend_url), request.url.path),
status_code=301,
)