Maison >développement back-end >Tutoriel Python >Comment servir un fichier HTML spécifique sur le chemin racine à l'aide de FastAPI et StaticFiles ?

Comment servir un fichier HTML spécifique sur le chemin racine à l'aide de FastAPI et StaticFiles ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-12 05:34:01581parcourir

How to Serve a Specific HTML File on the Root Path Using FastAPI and StaticFiles?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn