コンテンツにスキップ

サブアプリケーション - マウント

🌐 AI と人間による翻訳

この翻訳は、人間のガイドに基づいて AI によって作成されました。🤝

原文の意図を取り違えていたり、不自然な表現になっている可能性があります。🤖

AI LLM をより適切に誘導するのを手伝う ことで、この翻訳を改善できます。

英語版

それぞれ独立した OpenAPI とドキュメント UI を持つ2つの独立した FastAPI アプリケーションが必要な場合、メインアプリに1つ(以上)のサブアプリケーションを「マウント」できます。

FastAPI アプリケーションのマウント

「マウント」とは、特定のパスに完全に「独立した」アプリケーションを追加し、そのサブアプリケーションで宣言された path operation によって、そのパス以下のすべてを処理させることを意味します。

トップレベルアプリケーション

まず、メインのトップレベル FastAPI アプリケーションと、その path operation を作成します:

from fastapi import FastAPI

app = FastAPI()


@app.get("/app")
def read_main():
    return {"message": "Hello World from main app"}


subapi = FastAPI()


@subapi.get("/sub")
def read_sub():
    return {"message": "Hello World from sub API"}


app.mount("/subapi", subapi)

サブアプリケーション

次に、サブアプリケーションとその path operation を作成します。

このサブアプリケーションは通常の FastAPI アプリケーションですが、これを「マウント」します:

from fastapi import FastAPI

app = FastAPI()


@app.get("/app")
def read_main():
    return {"message": "Hello World from main app"}


subapi = FastAPI()


@subapi.get("/sub")
def read_sub():
    return {"message": "Hello World from sub API"}


app.mount("/subapi", subapi)

サブアプリケーションをマウント

トップレベルのアプリケーション app に、サブアプリケーション subapi をマウントします。

この例では、パス /subapi にマウントされます:

from fastapi import FastAPI

app = FastAPI()


@app.get("/app")
def read_main():
    return {"message": "Hello World from main app"}


subapi = FastAPI()


@subapi.get("/sub")
def read_sub():
    return {"message": "Hello World from sub API"}


app.mount("/subapi", subapi)

自動 API ドキュメントの確認

では、fastapi コマンドでこのファイルを実行します:

$ fastapi dev main.py

<span style="color: green;">INFO</span>:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

そして、http://127.0.0.1:8000/docs を開きます。

メインアプリ用の自動 API ドキュメントが表示され、そのアプリ自身の path operation のみが含まれます:

次に、サブアプリケーションのドキュメント http://127.0.0.1:8000/subapi/docs を開きます。

サブアプリケーション用の自動 API ドキュメントが表示され、そのアプリ自身の path operation のみが、正しいサブパス接頭辞 /subapi の下で表示されます:

どちらの UI でも操作すれば正しく動作します。ブラウザがそれぞれのアプリ/サブアプリと通信できるためです。

技術詳細: root_path

上記のようにサブアプリケーションをマウントすると、FastAPI は ASGI 仕様の root_path と呼ばれる仕組みを使って、そのサブアプリケーションへのマウントパスを伝播します。

このため、サブアプリケーションはドキュメント UI でそのパス接頭辞を使用すべきことを認識できます。

さらに、サブアプリケーション自身が別のサブアプリケーションをマウントしていても問題ありません。FastAPI がこれらの root_path をすべて自動的に処理するためです。

root_path の詳細や明示的な指定方法については、プロキシの背後で の節で学べます。