diff --git a/app/main.py b/app/main.py index 2d197d3..1320b3a 100644 --- a/app/main.py +++ b/app/main.py @@ -4,7 +4,7 @@ from __future__ import annotations import logging from contextlib import asynccontextmanager -from fastapi import FastAPI +from fastapi import FastAPI, Request from fastapi.staticfiles import StaticFiles from fastapi.middleware.cors import CORSMiddleware from starlette.middleware.sessions import SessionMiddleware @@ -84,3 +84,61 @@ async def pwa_manifest(): "theme_color": "#191919", "icons": [{"src": "/static/icon-192.png", "sizes": "192x192", "type": "image/png"}], } + + +# ═══════════ API aliases (v4.0.1) ═══════════ + + +@app.get("/api/pages") +async def api_pages_alias(request: Request): + """Alias /api/pages → /board/api/pages for API path consistency.""" + from fastapi.responses import RedirectResponse + qs = str(request.url.query) + target = f"/board/api/pages{'?' + qs if qs else ''}" + return RedirectResponse(url=target, status_code=307) + + +@app.post("/api/pages") +async def api_pages_post_alias(request: Request): + """Alias POST /api/pages → /board/api/pages for API path consistency.""" + from fastapi.responses import RedirectResponse + return RedirectResponse(url="/board/api/pages", status_code=307) + + +# ═══════════ Styled 404 handler ═══════════ + + +NOT_FOUND_HTML = """ + +
+ +