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

Susan Sarandon
Libérer: 2024-11-10 09:09:02
original
426 Les gens l'ont consulté

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')
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal