File size: 1,139 Bytes
df0ad38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse
import os

app = FastAPI()

# 1. Monter le dossier 'assets' contenant le JS et le CSS compilés par Vite
# Cela permet d'accéder à /assets/index.js, etc.
if os.path.exists("dist/assets"):
    app.mount("/assets", StaticFiles(directory="dist/assets"), name="assets")

# 2. Route "catch-all" pour servir l'application React (Single Page Application)
# Peu importe l'URL demandée, on renvoie index.html, et React gère le routing côté client.
@app.get("/{full_path:path}")
async def serve_react_app(full_path: str):
    # Si le fichier demandé existe physiquement (ex: vite.svg, robots.txt), on le sert
    file_path = os.path.join("dist", full_path)
    if os.path.exists(file_path) and os.path.isfile(file_path):
        return FileResponse(file_path)
    
    # Sinon, on renvoie index.html pour que React prenne le relais
    if os.path.exists("dist/index.html"):
        return FileResponse("dist/index.html")
    
    return {"error": "L'application est en cours de construction ou le dossier 'dist' est manquant."}