विषय पर बढ़ें

Sub Applications - Mounts

🌐 एआई और मनुष्यों द्वारा किया गया अनुवाद

यह अनुवाद मनुष्यों के मार्गदर्शन में एआई द्वारा किया गया है। 🤝

इसमें मूल अर्थ को गलत समझने या अप्राकृतिक लगने आदि जैसी गलतियाँ हो सकती हैं। 🤖

आप हमें एआई LLM को बेहतर मार्गदर्शन करने में मदद करके इस अनुवाद को बेहतर बना सकते हैं।

अंग्रेज़ी संस्करण

अगर आपको दो स्वतंत्र FastAPI applications चाहिए, जिनका अपना स्वतंत्र OpenAPI और अपनी docs UIs हों, तो आप एक मुख्य app रख सकते हैं और एक (या अधिक) sub-application(s) को "mount" कर सकते हैं।

FastAPI application को Mount करना

"Mounting" का मतलब है किसी विशिष्ट path में पूरी तरह "स्वतंत्र" application जोड़ना, जो फिर उस path के अंतर्गत सब कुछ handle करने का ध्यान रखता है, उस sub-application में घोषित path operations के साथ।

Top-level application

सबसे पहले, मुख्य, top-level FastAPI application और उसके path operations बनाएँ:

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)

Sub-application

फिर, अपनी sub-application और उसके path operations बनाएँ।

यह sub-application बस एक और standard FastAPI application है, लेकिन यही वह है जिसे "mounted" किया जाएगा:

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)

Sub-application को mount करें

अपने top-level application, app, में sub-application, subapi, को mount करें।

इस मामले में, इसे path /subapi पर mount किया जाएगा:

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)

Automatic API docs देखें

अब, fastapi command चलाएँ:

$ fastapi dev

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

और docs को http://127.0.0.1:8000/docs पर खोलें।

आप मुख्य app के लिए automatic API docs देखेंगे, जिसमें केवल उसके अपने path operations शामिल होंगे:

और फिर, sub-application के लिए docs को http://127.0.0.1:8000/subapi/docs पर खोलें।

आप sub-application के लिए automatic API docs देखेंगे, जिसमें केवल उसके अपने path operations शामिल होंगे, सभी सही sub-path prefix /subapi के अंतर्गत:

अगर आप दोनों user interfaces में से किसी के साथ interact करने की कोशिश करते हैं, तो वे सही तरह काम करेंगे, क्योंकि browser हर specific app या sub-app से बात कर पाएगा।

तकनीकी विवरण: root_path

जब आप ऊपर बताए गए तरीके से कोई sub-application mount करते हैं, तो FastAPI sub-application के लिए mount path communicate करने का ध्यान रखेगा, ASGI specification के एक mechanism का उपयोग करके जिसे root_path कहा जाता है।

इस तरह, sub-application को पता होगा कि docs UI के लिए उस path prefix का उपयोग करना है।

और sub-application की अपनी mounted sub-applications भी हो सकती हैं और सब कुछ सही तरह काम करेगा, क्योंकि FastAPI इन सभी root_paths को अपने आप handle करता है।

आप root_path के बारे में और इसे स्पष्ट रूप से कैसे उपयोग करें, यह Behind a Proxy वाले section में और सीखेंगे।