Maison  >  Article  >  développement back-end  >  Comment servir un fichier HTML personnalisé au chemin racine dans FastAPI avec StaticFiles ?

Comment servir un fichier HTML personnalisé au chemin racine dans FastAPI avec StaticFiles ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-10 09:09:02408parcourir

How to Serve a Custom HTML File at the Root Path in FastAPI with StaticFiles?

Comment charger un fichier différent de index.html dans le chemin racine de FastAPI lors de l'utilisation de fichiers statiques ?

Problème

Dans une application FastAPI qui sert des fichiers statiques fichiers utilisant StaticFiles, la requête au chemin racine renvoie index.html au lieu d'un fichier HTML personnalisé spécifié dans un @app.get("/") séparé.

Solution

Selon le Documentation Starlette pour StaticFiles :

html - Exécuté en mode HTML. Charge automatiquement index.html pour les répertoires si un tel fichier existe.

Pour résoudre ce problème, montez l'instance StaticFiles sur un chemin différent, tel que /static, au lieu de / (chemin racine), comme illustré ci-dessous :

from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse

app = FastAPI()

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

@app.get('/')
async def index() -> FileResponse:
    return FileResponse('static/custom.html', media_type='html')

L'ordre compte

L'ordre de montage et de définition des points de terminaison est crucial :

  • Si StaticFiles est monté après avoir défini le @app.get("/" ), index.html ne sera pas chargé automatiquement.
  • Si StaticFiles est monté avant tous les autres points de terminaison, il traitera toutes les requêtes en raison de sa priorité.

Le html=True Option

Le paramètre html=True simplifie la diffusion d'un répertoire de contenu Web sur une seule ligne. Cependant, pour le contenu dynamique ou les points de terminaison 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