Servir des fichiers HTML personnalisés dans le chemin racine de FastAPI avec StaticFiles
Lors de l'utilisation de FastAPI avec StaticFiles, la diffusion de fichiers HTML personnalisés peut différer de celle comportement attendu. La configuration par défaut charge automatiquement index.html lorsqu'un middleware de fichier statique est monté sur le chemin racine. Cependant, il est possible de remplacer cela et d'afficher un fichier HTML différent en suivant ces étapes :
Monter des fichiers statiques sur un chemin différent
Pour éviter le problème de chargement d'index.html , montez l'instance StaticFiles sur un chemin unique au lieu de la racine. Par exemple, montez-le sur /static :
app.mount( "/static", StaticFiles(directory="static", html=True), name="static", )
Définition du point de terminaison du chemin racine
Ensuite, créez un point de terminaison personnalisé pour gérer le chemin racine. Ce point de terminaison renverra le fichier HTML personnalisé souhaité :
@app.get("/") async def index(): return FileResponse("static/custom.html", media_type="html")
Ordre des définitions
L'ordre des définitions est crucial. Si vous montez StaticFiles avant de définir le point de terminaison du chemin racine, l'application StaticFiles traitera toutes les requêtes adressées au chemin racine, y compris celle définie dans le point de terminaison.
Exemple avec un ordre approprié
Voici un exemple avec l'ordre correct des définitions :
from fastapi import FastAPI from fastapi.staticfiles import StaticFiles from fastapi.responses import FileResponse app = FastAPI() @app.get("/") async def index(): return FileResponse("static/custom.html", media_type="html") app.mount( "/static", StaticFiles(directory="static", html=True), name="static", )
En suivant ces étapes, vous pouvez servir des fichiers HTML personnalisés dans le chemin racine de votre application FastAPI tout en continuant à utiliser StaticFiles pour servir des fichiers statiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!