ホームページ >バックエンド開発 >Python チュートリアル >カスタム HTML ファイルを FastAPI ルート パスとして提供するにはどうすればよいですか?

カスタム HTML ファイルを FastAPI ルート パスとして提供するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-12 01:49:01689ブラウズ

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

カスタム HTML ファイルを FastAPI ルート パスとして提供する

custom.html などのカスタム HTML ファイルを FastAPI アプリのルート パスとしてレンダリングすることを目的としています。ただし、現在の設定では、代わりにデフォルトの Index.html が返されます。

Index.html が返される原因

StaticFiles に関する Starlette のドキュメントで説明されているように:

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

解決策

この問題を解決するには、次の 2 つのオプションがあります。

1. StaticFiles を別のパスにマウントします:

StaticFiles インスタンスを /static などの一意のパスにマウントします。これにより、/static で始まるパスはすべて StaticFiles アプリケーションによって処理されるようになります。

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

2.エンドポイントの後に StaticFiles を定義:

それでも StaticFiles をルート パス (/) にマウントしたい場合は、すべての API エンドポイントを宣言した後に StaticFiles インスタンスを定義します。これにより、エンドポイントが StaticFiles よりも優先されるようになります。

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

html=True オプション

html=True 引数を使用すると、1 行のコードで静的 Web コンテンツを簡単に提供できます。 。ただし、動的 ​​HTML ファイルと追加の API エンドポイントが必要な場合は、テンプレートを使用し、html=True を使用せずに StaticFiles を別のパスにマウントすることを検討してください。

以上がカスタム HTML ファイルを FastAPI ルート パスとして提供するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。