feat(app): add frontend url configuration
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
23
app/router/redirect.py
Normal 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,
|
||||
)
|
||||
Reference in New Issue
Block a user