Maison  >  Article  >  développement back-end  >  Comment servir un fichier HTML personnalisé comme chemin racine FastAPI ?

Comment servir un fichier HTML personnalisé comme chemin racine FastAPI ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-12 01:49:01614parcourir

How to Serve a Custom HTML File as the FastAPI Root Path?

Servir un fichier HTML personnalisé comme chemin racine FastAPI

Vous souhaitez afficher un fichier HTML personnalisé, tel que custom.html, comme chemin racine de votre application FastAPI. Cependant, votre configuration actuelle entraîne le renvoi du fichier index.html par défaut.

Cause du retour d'Index.html

Comme décrit dans la documentation Starlette sur StaticFiles :

html - Run in HTML mode. Automatically loads index.html for directories if such file exists.

Solution

Pour résoudre ce problème, vous avez deux options :

1. Montez StaticFiles sur un chemin différent :

Montez votre instance StaticFiles sur un chemin unique, tel que /static. Cela garantit que tout chemin commençant par /static est géré par l'application StaticFiles.

app.mount('/static', StaticFiles(directory='static'), name='static')

2. Définir StaticFiles après les points de terminaison :

Si vous souhaitez toujours monter StaticFiles sur le chemin racine (/), définissez l'instance StaticFiles après avoir déclaré tous vos points de terminaison d'API. Cela garantit que les points de terminaison ont la priorité sur StaticFiles.

@app.get('/')
async def index():
    return FileResponse('static/custom.html')
app.mount('/', StaticFiles(directory='static', html=True), name='static')

Option html=True

L'argument html=True permet de diffuser facilement du contenu Web statique avec une seule ligne de code. . Toutefois, si vous avez besoin de fichiers HTML dynamiques et de points de terminaison d'API supplémentaires, envisagez d'utiliser des modèles et de monter StaticFiles sur un chemin différent sans utiliser html=True.

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