FastAPI¶
🌐 एआई और मनुष्यों द्वारा किया गया अनुवाद
यह अनुवाद मनुष्यों के मार्गदर्शन में एआई द्वारा किया गया है। 🤝
इसमें मूल अर्थ को गलत समझने या अप्राकृतिक लगने आदि जैसी गलतियाँ हो सकती हैं। 🤖
आप हमें एआई LLM को बेहतर मार्गदर्शन करने में मदद करके इस अनुवाद को बेहतर बना सकते हैं।
FastAPI फ़्रेमवर्क, उच्च प्रदर्शन, सीखने में आसान, कोड लिखने में तेज़, प्रोडक्शन के लिए तैयार
दस्तावेज़: 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 का बहुत उपयोग कर रहा/रही हूँ। वास्तव में मैं अपनी टीम की Microsoft में ML सेवाओं के लिए इसे उपयोग करने की योजना बना रहा/रही हूँ। इनमें से कुछ को मुख्य Windows प्रोडक्ट और कुछ Office प्रोडक्ट्स में इंटीग्रेट किया जा रहा है।"
"हमने FastAPI लाइब्रेरी अपनाई ताकि एक REST सर्वर स्पॉन किया जा सके जिसे अन्दाज़ों/अनुमानों को प्राप्त करने के लिए क्वेरी किया जा सके।" [Ludwig के लिए]
"Netflix हमारे संकट प्रबंधन ऑर्केस्ट्रेशन फ़्रेमवर्क: Dispatch के ओपन-सोर्स रिलीज़ की घोषणा करते हुए प्रसन्न है!" [FastAPI के साथ बनाया गया]
"यदि कोई प्रोडक्शन Python API बनाना चाहता है, तो मैं FastAPI की अत्यधिक अनुशंसा करूंगा/करूंगी। यह सुंदरता से डिज़ाइन किया गया है, उपयोग में सरल है और बेहद स्केलेबल है — यह हमारी API-फर्स्ट डेवलपमेंट रणनीति का मुख्य घटक बन गया है।"
"[...] मैं इन दिनों FastAPI का बहुत उपयोग कर रहा/रही हूँ। [...] वास्तव में मैं अपनी टीम की Microsoft में ML सेवाओं के लिए इसे उपयोग करने की योजना बना रहा/रही हूँ। इनमें से कुछ को मुख्य Windows प्रोडक्ट और कुछ Office प्रोडक्ट्स में इंटीग्रेट किया जा रहा है."
"हमने FastAPI लाइब्रेरी अपनाई ताकि एक REST सर्वर स्पॉन किया जा सके जिसे अनुमानों को प्राप्त करने के लिए क्वेरी किया जा सके। [Ludwig के लिए]"
"Netflix हमारे संकट प्रबंधन ऑर्केस्ट्रेशन फ़्रेमवर्क: Dispatch के ओपन-सोर्स रिलीज़ की घोषणा करते हुए प्रसन्न है! [FastAPI के साथ बनाया गया]"
"यदि कोई प्रोडक्शन Python API बनाना चाहता है, तो मैं FastAPI की अत्यधिक अनुशंसा करूंगा/करूंगी। यह सुंदरता से डिज़ाइन किया गया है, उपयोग में सरल है और बेहद स्केलेबल है, यह हमारी API-फ़र्स्ट डेवलपमेंट रणनीति का मुख्य घटक बन गया है और हमारे Virtual TAC Engineer जैसे कई ऑटोमेशन्स और सेवाओं को चला रहा है."
FastAPI कॉन्फ़¶
FastAPI Conf '26 28 अक्टूबर, 2026 को एम्स्टर्डम, नीदरलैंड्स में हो रही है। सब कुछ FastAPI के बारे में, सीधे स्रोत से। 🎤
FastAPI मिनी डॉक्यूमेंट्री¶
साल 2025 के अंत में एक FastAPI मिनी डॉक्यूमेंट्री रिलीज़ हुई, आप इसे ऑनलाइन देख सकते हैं:
Typer, CLIs का FastAPI¶
यदि आप वेब API के बजाय टर्मिनल में उपयोग होने वाला CLI ऐप बना रहे हैं, तो Typer देखें।
Typer, FastAPI का छोटा भाई/बहन है। और इसका उद्देश्य CLIs का FastAPI होना है। ⌨️ 🚀
आवश्यकताएँ¶
FastAPI दिग्गजों के कंधों पर खड़ा है:
स्थापना¶
एक वर्चुअल एन्वायरनमेंट बनाएँ और सक्रिय करें, और फिर 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
GEToperations लेती हैं (जिन्हें HTTP methods भी कहा जाता है)। - path
/items/{item_id}में एक path parameteritem_idहै जोintहोना चाहिए। - path
/items/{item_id}में एक वैकल्पिकstrquery parameterqहै।
इंटरैक्टिव API दस्तावेज़¶
अब http://127.0.0.1:8000/docs पर जाएँ।
आपको स्वचालित इंटरैक्टिव API दस्तावेज़ीकरण दिखेगा (जो Swagger UI द्वारा प्रदान किया जाता है):

वैकल्पिक API दस्तावेज़¶
और अब, http://127.0.0.1:8000/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 सहित:

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

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

वैकल्पिक API दस्तावेज़ उन्नयन¶
और अब, http://127.0.0.1:8000/redoc पर जाएँ।
- वैकल्पिक दस्तावेज़ भी नए query parameter और body को दर्शाएगा:

पुनरावलोकन¶
संक्षेप में, आप 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ऑब्जेक्ट्स।- डेटाबेस मॉडल्स।
- ...और बहुत कुछ।
- Python प्रकारों का रूपांतरण (
- स्वचालित इंटरैक्टिव 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)।- क्योंकि
qparameter= Noneके साथ घोषित है, यह वैकल्पिक है। Noneके बिना यह आवश्यक होता (जैसेPUTके मामले में body आवश्यक है)।
- क्योंकि
/items/{item_id}परPUTअनुरोधों के लिए, body को JSON के रूप में पढ़ेगा:- यह जाँचेगा कि एक आवश्यक attribute
nameहै जोstrहोना चाहिए। - यह जाँचेगा कि एक आवश्यक attribute
priceहै जोfloatहोना चाहिए। - यह जाँचेगा कि एक वैकल्पिक attribute
is_offerहै, जो यदि मौजूद है तोboolहोना चाहिए। - यह सब गहराई से nested JSON objects के लिए भी काम करेगा।
- यह जाँचेगा कि एक आवश्यक attribute
- JSON से और JSON में स्वतः रूपांतरण।
- हर चीज़ को OpenAPI के साथ दस्तावेज़ित करेगा, जिसे निम्न द्वारा उपयोग किया जा सकता है:
- इंटरैक्टिव दस्तावेज़ीकरण प्रणालियाँ।
- कई भाषाओं के लिए स्वचालित क्लाइंट कोड जनरेशन प्रणालियाँ।
- सीधे 2 इंटरैक्टिव दस्तावेज़ीकरण वेब इंटरफेसेज़ प्रदान करेगा।
हमने केवल सतह को छुआ है, लेकिन आपको पहले ही समझ आ गया होगा कि यह सब कैसे काम करता है।
इस पंक्ति को बदलकर देखें:
return {"item_name": item.name, "item_id": item_id}
...यहाँ से:
... "item_name": item.name ...
...यहाँ तक:
... "item_price": item.price ...
...और देखें कि आपका एडिटर attributes को कैसे auto-complete करेगा और उनके प्रकार जानेगा:

अधिक फ़ीचर्स सहित एक अधिक सम्पूर्ण उदाहरण के लिए, ट्यूटोरियल - यूज़र गाइड देखें।
चेतावनी: ट्यूटोरियल - यूज़र गाइड में शामिल है:
- विभिन्न स्थानों से 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 द्वारा उपयोग किया गया:
email-validator- ईमेल वैधीकरण के लिए।
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 लाइसेंस की शर्तों के अंतर्गत लाइसेंस प्राप्त है।















