विषय पर बढ़ें

FastAPI

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

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

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

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

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

FastAPI

FastAPI फ़्रेमवर्क, उच्च प्रदर्शन, सीखने में आसान, कोड लिखने में तेज़, प्रोडक्शन के लिए तैयार

टेस्ट कवरेज पैकेज संस्करण समर्थित Python संस्करण


दस्तावेज़: https://fastapi.tiangolo.com

स्रोत कोड: https://github.com/fastapi/fastapi


FastAPI एक आधुनिक, तेज़ (उच्च-प्रदर्शन) वेब फ़्रेमवर्क है जो मानक Python type hints के आधार पर Python से APIs बनाने के लिए है।

मुख्य विशेषताएँ:

  • तेज़: बहुत उच्च प्रदर्शन, NodeJS और Go के समकक्ष (Starlette और Pydantic की बदौलत)। उपलब्ध सबसे तेज़ Python फ़्रेमवर्क्स में से एक
  • कोड लिखने में तेज़: फ़ीचर्स विकसित करने की गति लगभग 200% से 300% तक बढ़ाएँ। *
  • कम बग्स: मानवीय (डेवलपर) त्रुटियों में लगभग 40% की कमी। *
  • सहज: बेहतरीन एडिटर सपोर्ट। हर जगह ऑटो-कम्प्लीट। डिबगिंग में कम समय।
  • आसान: इस्तेमाल और सीखने में आसान। दस्तावेज़ पढ़ने में कम समय।
  • संक्षिप्त: कोड डुप्लीकेशन को न्यूनतम करें। प्रत्येक parameter declaration से कई फ़ीचर्स। कम बग्स।
  • मजबूत: प्रोडक्शन-रेडी कोड प्राप्त करें। स्वतः इंटरैक्टिव दस्तावेज़ीकरण के साथ।
  • मानकों पर आधारित: APIs के खुले मानकों पर आधारित (और पूर्णतः अनुकूल): OpenAPI (जिसे पहले Swagger कहा जाता था) और JSON Schema

* आंतरिक डेवलपमेंट टीम द्वारा प्रोडक्शन ऐप्स बनाते समय किए गए परीक्षणों के आधार पर अनुमान।

प्रायोजक

कीस्टोन प्रायोजक

FastAPI Cloud. By the same team behind FastAPI. You code. We Cloud.

गोल्ड प्रायोजक

BlockBee Cryptocurrency Payment Gateway Scalar: Beautiful Open-Source API References from Swagger/OpenAPI files Auth, user management and more for your B2B product liblab - Generate SDKs from FastAPI Deploy & scale any full-stack web app on Render. Focus on building apps, not infra. Cut Code Review Time & Bugs in Half with CodeRabbit The Gold Standard in Retail Account Linking Deploy enterprise applications at startup speed SerpApi: Web Search API Greptile: The AI Code Reviewer

सिल्वर प्रायोजक

Pay as you go for market data Svix - Webhooks as a service Stainless | Generate best-in-class SDKs Fine-Grained Authorization for FastAPI InterviewPal - AI Interview Coach for Engineers and Devs Dribia - Data Science within your reach TalorData SERP API - Multi-Engine Search Results Data

अन्य प्रायोजक

विचार

"मैं इन दिनों FastAPI का बहुत उपयोग कर रहा/रही हूँ। वास्तव में मैं अपनी टीम की Microsoft में ML सेवाओं के लिए इसे उपयोग करने की योजना बना रहा/रही हूँ। इनमें से कुछ को मुख्य Windows प्रोडक्ट और कुछ Office प्रोडक्ट्स में इंटीग्रेट किया जा रहा है।"
— कबीर खान, Microsoft (संदर्भ)

"[...] मैं इन दिनों FastAPI का बहुत उपयोग कर रहा/रही हूँ। [...] वास्तव में मैं अपनी टीम की Microsoft में ML सेवाओं के लिए इसे उपयोग करने की योजना बना रहा/रही हूँ। इनमें से कुछ को मुख्य Windows प्रोडक्ट और कुछ Office प्रोडक्ट्स में इंटीग्रेट किया जा रहा है."

कबीर खान - Microsoft (संदर्भ)

"हमने FastAPI लाइब्रेरी अपनाई ताकि एक REST सर्वर स्पॉन किया जा सके जिसे अनुमानों को प्राप्त करने के लिए क्वेरी किया जा सके। [Ludwig के लिए]"

पिएरो मोलिनो, यारोस्लाव डुडिन, और साई सुमंत मिर्याला - Uber (संदर्भ)

"Netflix हमारे संकट प्रबंधन ऑर्केस्ट्रेशन फ़्रेमवर्क: Dispatch के ओपन-सोर्स रिलीज़ की घोषणा करते हुए प्रसन्न है! [FastAPI के साथ बनाया गया]"

केविन ग्लिसन, मार्क विलानोवा, फॉरेस्ट मॉन्सेन - Netflix (संदर्भ)

"यदि कोई प्रोडक्शन Python API बनाना चाहता है, तो मैं FastAPI की अत्यधिक अनुशंसा करूंगा/करूंगी। यह सुंदरता से डिज़ाइन किया गया है, उपयोग में सरल है और बेहद स्केलेबल है, यह हमारी API-फ़र्स्ट डेवलपमेंट रणनीति का मुख्य घटक बन गया है और हमारे Virtual TAC Engineer जैसे कई ऑटोमेशन्स और सेवाओं को चला रहा है."

डीयोन पिल्सबरी - Cisco (संदर्भ)

FastAPI कॉन्फ़

FastAPI Conf '26 28 अक्टूबर, 2026 को एम्स्टर्डम, नीदरलैंड्स में हो रही है। सब कुछ FastAPI के बारे में, सीधे स्रोत से। 🎤

FastAPI Conf '26 - 28 अक्टूबर, 2026 - एम्स्टर्डम, NL

FastAPI मिनी डॉक्यूमेंट्री

साल 2025 के अंत में एक FastAPI मिनी डॉक्यूमेंट्री रिलीज़ हुई, आप इसे ऑनलाइन देख सकते हैं:

FastAPI मिनी डॉक्यूमेंट्री

Typer, CLIs का FastAPI

यदि आप वेब API के बजाय टर्मिनल में उपयोग होने वाला CLI ऐप बना रहे हैं, तो Typer देखें।

Typer, FastAPI का छोटा भाई/बहन है। और इसका उद्देश्य CLIs का FastAPI होना है। ⌨️ 🚀

आवश्यकताएँ

FastAPI दिग्गजों के कंधों पर खड़ा है:

  • वेब हिस्सों के लिए Starlette
  • डेटा हिस्सों के लिए Pydantic

स्थापना

एक वर्चुअल एन्वायरनमेंट बनाएँ और सक्रिय करें, और फिर FastAPI स्थापित करें:

$ pip install "fastapi[standard]"

---> 100%

नोट: सुनिश्चित करें कि आप सभी टर्मिनलों में काम करने के लिए "fastapi[standard]" को उद्धरण-चिह्नों में रखें।

उदाहरण

इसे बनाएँ

main.py फ़ाइल बनाएँ और इसमें लिखें:

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: str | None = None):
    return {"item_id": item_id, "q": q}
या async def का उपयोग करें...

यदि आपका कोड async / await का उपयोग करता है, तो async def का उपयोग करें:

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str | None = None):
    return {"item_id": item_id, "q": q}

नोट:

यदि आप नहीं जानते, तो "जल्दी में?" सेक्शन देखें: दस्तावेज़ में async और await के बारे में।

इसे चलाएँ

सर्वर को इस कमांड से चलाएँ:

$ fastapi dev

 ╭────────── FastAPI CLI - Development mode ───────────╮
 │                                                     │
 │  Serving at: http://127.0.0.1:8000                  │
 │                                                     │
 │  API docs: http://127.0.0.1:8000/docs               │
 │                                                     │
 │  Running in development mode, for production use:   │
 │                                                     │
 │  fastapi run                                        │
 │                                                     │
 ╰─────────────────────────────────────────────────────╯

INFO:     Will watch for changes in these directories: ['/home/user/code/awesomeapp']
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [2248755] using WatchFiles
INFO:     Started server process [2248757]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
fastapi dev कमांड के बारे में...

fastapi dev कमांड आपका main.py फ़ाइल स्वतः पढ़ता है, उसमें FastAPI ऐप का पता लगाता है, और Uvicorn का उपयोग करके सर्वर शुरू करता है।

डिफ़ॉल्ट रूप से, fastapi dev लोकल डेवलपमेंट के लिए auto-reload सक्षम करके शुरू होगा।

आप इसके बारे में और पढ़ सकते हैं: FastAPI CLI दस्तावेज़ में।

इसे जाँचें

अपने ब्राउज़र में http://127.0.0.1:8000/items/5?q=somequery खोलें।

आपको JSON प्रतिक्रिया इस प्रकार दिखेगी:

{"item_id": 5, "q": "somequery"}

आपने पहले ही एक API बना ली है जो:

  • paths / और /items/{item_id} पर HTTP अनुरोध स्वीकार करती है।
  • दोनों paths GET operations लेती हैं (जिन्हें HTTP methods भी कहा जाता है)।
  • path /items/{item_id} में एक path parameter item_id है जो int होना चाहिए।
  • path /items/{item_id} में एक वैकल्पिक str query parameter q है।

इंटरैक्टिव API दस्तावेज़

अब http://127.0.0.1:8000/docs पर जाएँ।

आपको स्वचालित इंटरैक्टिव API दस्तावेज़ीकरण दिखेगा (जो Swagger UI द्वारा प्रदान किया जाता है):

Swagger UI

वैकल्पिक API दस्तावेज़

और अब, http://127.0.0.1:8000/redoc पर जाएँ।

आपको वैकल्पिक स्वचालित दस्तावेज़ीकरण दिखेगा (जो ReDoc द्वारा प्रदान किया जाता है):

ReDoc

उदाहरण उन्नयन

अब PUT अनुरोध से body प्राप्त करने के लिए main.py फ़ाइल संशोधित करें।

Pydantic की बदौलत, body को मानक Python प्रकारों से घोषित करें।

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


class Item(BaseModel):
    name: str
    price: float
    is_offer: bool | None = None


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: str | None = None):
    return {"item_id": item_id, "q": q}


@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
    return {"item_name": item.name, "item_id": item_id}

fastapi dev सर्वर स्वतः रीलोड होना चाहिए।

इंटरैक्टिव API दस्तावेज़ उन्नयन

अब http://127.0.0.1:8000/docs पर जाएँ।

  • इंटरैक्टिव API दस्तावेज़ स्वतः अपडेट हो जाएगा, नए body सहित:

Swagger UI

  • "Try it out" बटन पर क्लिक करें, यह आपको parameters भरने और सीधे API के साथ इंटरेक्ट करने की अनुमति देता है:

Swagger UI interaction

  • फिर "Execute" बटन पर क्लिक करें, यूज़र इंटरफ़ेस आपकी API से संवाद करेगा, parameters भेजेगा, परिणाम प्राप्त करेगा और उन्हें स्क्रीन पर दिखाएगा:

Swagger UI interaction

वैकल्पिक API दस्तावेज़ उन्नयन

और अब, http://127.0.0.1:8000/redoc पर जाएँ।

  • वैकल्पिक दस्तावेज़ भी नए query parameter और body को दर्शाएगा:

ReDoc

पुनरावलोकन

संक्षेप में, आप parameters, body, आदि के प्रकार फ़ंक्शन parameters के रूप में एक बार घोषित करते हैं।

आप यह मानक आधुनिक Python प्रकारों से करते हैं।

आपको किसी नई सिंटैक्स, किसी विशेष लाइब्रेरी के methods या classes, आदि सीखने की आवश्यकता नहीं है।

बस मानक Python

उदाहरण के लिए, एक int के लिए:

item_id: int

या एक अधिक जटिल Item मॉडल के लिए:

item: Item

...और केवल उसी एक घोषणा के साथ आपको मिलता है:

  • एडिटर सपोर्ट, जिसमें शामिल है:
    • कम्प्लीशन।
    • प्रकार जाँच।
  • डेटा का वैधीकरण:
    • जब डेटा अमान्य हो तो स्वतः और स्पष्ट त्रुटियाँ।
    • गहराई से nested JSON objects के लिए भी वैधीकरण।
  • इनपुट डेटा का रूपांतरण: नेटवर्क से Python डेटा और प्रकारों में। इनमें से पढ़ना:
    • JSON।
    • Path parameters।
    • Query parameters।
    • Cookies।
    • Headers।
    • Forms।
    • Files।
  • आउटपुट डेटा का रूपांतरण: Python डेटा और प्रकारों से नेटवर्क डेटा (JSON के रूप में) में:
    • Python प्रकारों का रूपांतरण (str, int, float, bool, list, आदि)।
    • datetime ऑब्जेक्ट्स।
    • UUID ऑब्जेक्ट्स।
    • डेटाबेस मॉडल्स।
    • ...और बहुत कुछ।
  • स्वचालित इंटरैक्टिव API दस्तावेज़ीकरण, जिनमें 2 वैकल्पिक यूज़र इंटरफ़ेस शामिल हैं:
    • Swagger UI।
    • ReDoc।

पिछले कोड उदाहरण पर लौटते हुए, FastAPI यह करेगा:

  • GET और PUT अनुरोधों के लिए path में item_id है, यह सत्यापित करेगा।
  • GET और PUT अनुरोधों के लिए item_id का प्रकार int है, यह सत्यापित करेगा।
    • यदि नहीं है, तो क्लाइंट को एक उपयोगी, स्पष्ट त्रुटि दिखाई देगी।
  • GET अनुरोधों के लिए यह जाँच करेगा कि q नाम का एक वैकल्पिक query parameter है (जैसे http://127.0.0.1:8000/items/foo?q=somequery)।
    • क्योंकि q parameter = None के साथ घोषित है, यह वैकल्पिक है।
    • None के बिना यह आवश्यक होता (जैसे PUT के मामले में body आवश्यक है)।
  • /items/{item_id} पर PUT अनुरोधों के लिए, body को JSON के रूप में पढ़ेगा:
    • यह जाँचेगा कि एक आवश्यक attribute name है जो str होना चाहिए।
    • यह जाँचेगा कि एक आवश्यक attribute price है जो float होना चाहिए।
    • यह जाँचेगा कि एक वैकल्पिक attribute is_offer है, जो यदि मौजूद है तो bool होना चाहिए।
    • यह सब गहराई से nested JSON objects के लिए भी काम करेगा।
  • JSON से और JSON में स्वतः रूपांतरण।
  • हर चीज़ को OpenAPI के साथ दस्तावेज़ित करेगा, जिसे निम्न द्वारा उपयोग किया जा सकता है:
    • इंटरैक्टिव दस्तावेज़ीकरण प्रणालियाँ।
    • कई भाषाओं के लिए स्वचालित क्लाइंट कोड जनरेशन प्रणालियाँ।
  • सीधे 2 इंटरैक्टिव दस्तावेज़ीकरण वेब इंटरफेसेज़ प्रदान करेगा।

हमने केवल सतह को छुआ है, लेकिन आपको पहले ही समझ आ गया होगा कि यह सब कैसे काम करता है।

इस पंक्ति को बदलकर देखें:

    return {"item_name": item.name, "item_id": item_id}

...यहाँ से:

        ... "item_name": item.name ...

...यहाँ तक:

        ... "item_price": item.price ...

...और देखें कि आपका एडिटर attributes को कैसे auto-complete करेगा और उनके प्रकार जानेगा:

editor support

अधिक फ़ीचर्स सहित एक अधिक सम्पूर्ण उदाहरण के लिए, ट्यूटोरियल - यूज़र गाइड देखें।

चेतावनी: ट्यूटोरियल - यूज़र गाइड में शामिल है:

  • विभिन्न स्थानों से parameters की घोषणा: headers, cookies, form fields और files
  • maximum_length या regex जैसी validation constraints कैसे सेट करें।
  • एक बहुत शक्तिशाली और उपयोग में आसान डिपेंडेंसी इंजेक्शन सिस्टम।
  • सुरक्षा और प्रमाणीकरण, जिसमें OAuth2 के साथ JWT tokens और HTTP Basic auth का समर्थन शामिल है।
  • गहराई से nested JSON मॉडल्स घोषित करने की अधिक उन्नत (पर समान रूप से आसान) तकनीकें (Pydantic की बदौलत)।
  • Strawberry और अन्य लाइब्रेरीज़ के साथ GraphQL एकीकरण।
  • कई अतिरिक्त फ़ीचर्स (Starlette की बदौलत) जैसे:
    • WebSockets
    • HTTPX और pytest पर आधारित अत्यंत आसान टेस्ट्स
    • CORS
    • Cookie Sessions
    • ...आदि।

अपनी ऐप परिनियोजित करें (वैकल्पिक)

आप वैकल्पिक रूप से अपनी FastAPI ऐप को FastAPI Cloud पर डिप्लॉय कर सकते हैं, यदि अभी तक नहीं किया है तो वेटिंग लिस्ट में जुड़ें। 🚀

यदि आपके पास पहले से FastAPI Cloud अकाउंट है (हमने आपको वेटिंग लिस्ट से आमंत्रित किया 😉), तो आप एक कमांड से अपनी एप्लिकेशन डिप्लॉय कर सकते हैं।

$ fastapi deploy

Deploying to FastAPI Cloud...

✅ Deployment successful!

🐔 Ready the chicken! Your app is ready at https://myapp.fastapicloud.dev

बस इतना ही! अब आप उस URL पर अपनी ऐप एक्सेस कर सकते हैं। ✨

FastAPI Cloud के बारे में

FastAPI Cloud को FastAPI के ही लेखक और टीम ने बनाया है।

यह न्यूनतम प्रयास में किसी API को बनाने, डिप्लॉय करने और एक्सेस करने की प्रक्रिया को सरल बनाता है।

यह FastAPI के साथ ऐप्स बनाने के उसी डेवलपर अनुभव को उन्हें क्लाउड में डिप्लॉय करने तक लाता है। 🎉

FastAPI Cloud, FastAPI and friends ओपन सोर्स प्रोजेक्ट्स के लिए मुख्य प्रायोजक और फंडिंग प्रदाता है। ✨

अन्य क्लाउड प्रदाताओं पर डिप्लॉय करें

FastAPI ओपन सोर्स है और मानकों पर आधारित है। आप FastAPI ऐप्स को किसी भी क्लाउड प्रदाता पर डिप्लॉय कर सकते हैं।

अपने क्लाउड प्रदाता के गाइड्स का पालन करें और उनके साथ FastAPI ऐप्स डिप्लॉय करें। 🤓

प्रदर्शन

स्वतंत्र TechEmpower बेंचमार्क दिखाते हैं कि Uvicorn के तहत चलने वाले FastAPI एप्लीकेशन्स उपलब्ध सबसे तेज़ Python फ़्रेमवर्क्स में से एक हैं, केवल Starlette और Uvicorn (जो FastAPI द्वारा आंतरिक रूप से उपयोग किए जाते हैं) से नीचे। (*)

इसके बारे में अधिक समझने के लिए, बेंचमार्क्स सेक्शन देखें।

निर्भरताएँ

FastAPI, Pydantic और Starlette पर निर्भर करता है।

standard निर्भरताएँ

जब आप pip install "fastapi[standard]" के साथ FastAPI स्थापित करते हैं, तो यह standard समूह की वैकल्पिक निर्भरताओं के साथ आता है:

Pydantic द्वारा उपयोग किया गया:

Starlette द्वारा उपयोग किया गया:

  • httpx - यदि आप TestClient का उपयोग करना चाहते हैं तो आवश्यक।
  • jinja2 - यदि आप डिफ़ॉल्ट टेम्पलेट कॉन्फ़िगरेशन का उपयोग करना चाहते हैं तो आवश्यक।
  • python-multipart - यदि आप फॉर्म "पार्सिंग" का समर्थन करना चाहते हैं, request.form() के साथ, तो आवश्यक।

FastAPI द्वारा उपयोग किया गया:

  • uvicorn - वह सर्वर जो आपकी एप्लिकेशन को लोड और सर्व करता है। इसमें uvicorn[standard] शामिल है, जिसमें उच्च-प्रदर्शन सर्विंग के लिए कुछ निर्भरताएँ (जैसे uvloop) शामिल हैं।
  • fastapi-cli[standard] - fastapi कमांड प्रदान करने के लिए।
    • इसमें fastapi-cloud-cli शामिल है, जो आपको अपनी FastAPI एप्लिकेशन को FastAPI Cloud पर डिप्लॉय करने की अनुमति देता है।

standard निर्भरताओं के बिना

यदि आप standard वैकल्पिक निर्भरताओं को शामिल नहीं करना चाहते, तो आप pip install fastapi के साथ स्थापित कर सकते हैं, pip install "fastapi[standard]" के बजाय।

fastapi-cloud-cli के बिना

यदि आप standard निर्भरताओं के साथ लेकिन fastapi-cloud-cli के बिना FastAPI स्थापित करना चाहते हैं, तो pip install "fastapi[standard-no-fastapi-cloud-cli]" के साथ स्थापित कर सकते हैं।

अतिरिक्त वैकल्पिक निर्भरताएँ

कुछ अतिरिक्त निर्भरताएँ हैं जिन्हें आप स्थापित करना चाहेंगे।

अतिरिक्त वैकल्पिक Pydantic निर्भरताएँ:

  • pydantic-settings - सेटिंग्स प्रबंधन के लिए।
  • pydantic-extra-types - Pydantic के साथ उपयोग करने के लिए अतिरिक्त प्रकारों हेतु।

अतिरिक्त वैकल्पिक FastAPI निर्भरताएँ:

  • orjson - यदि आप ORJSONResponse उपयोग करना चाहते हैं तो आवश्यक।
  • ujson - यदि आप UJSONResponse उपयोग करना चाहते हैं तो आवश्यक।

लाइसेंस

यह प्रोजेक्ट MIT लाइसेंस की शर्तों के अंतर्गत लाइसेंस प्राप्त है।