🌐 एआई और मनुष्यों द्वारा किया गया अनुवाद
यह अनुवाद मनुष्यों के मार्गदर्शन में एआई द्वारा किया गया है। 🤝
इसमें मूल अर्थ को गलत समझने या अप्राकृतिक लगने आदि जैसी गलतियाँ हो सकती हैं। 🤖
आप हमें एआई LLM को बेहतर मार्गदर्शन करने में मदद करके इस अनुवाद को बेहतर बना सकते हैं।
FastAPI¶
FastAPI framework, उच्च प्रदर्शन, सीखने में आसान, कोड लिखने में तेज़, production के लिए तैयार
दस्तावेज़: https://fastapi.tiangolo.com
स्रोत कोड: https://github.com/fastapi/fastapi
FastAPI एक आधुनिक, तेज़ (उच्च-प्रदर्शन) web framework है जो standard Python type hints के आधार पर Python से APIs बनाने के लिए है।
मुख्य विशेषताएँ:
- तेज़: बहुत उच्च प्रदर्शन, NodeJS और Go के समकक्ष (Starlette और Pydantic की बदौलत)। उपलब्ध सबसे तेज़ Python frameworks में से एक।
- कोड लिखने में तेज़: features विकसित करने की गति लगभग 200% से 300% तक बढ़ाएँ। *
- कम बग्स: मानवीय (developer) त्रुटियों में लगभग 40% की कमी। *
- सहज: बेहतरीन editor support। हर जगह Completion। डिबगिंग में कम समय।
- आसान: इस्तेमाल और सीखने में आसान होने के लिए डिज़ाइन किया गया। docs पढ़ने में कम समय।
- संक्षिप्त: कोड डुप्लीकेशन को न्यूनतम करें। प्रत्येक parameter declaration से कई features। कम बग्स।
- मजबूत: production-ready कोड प्राप्त करें। स्वतः इंटरैक्टिव दस्तावेज़ीकरण के साथ।
- standards-आधारित: APIs के open standards पर आधारित (और पूर्णतः अनुकूल): OpenAPI (जिसे पहले Swagger कहा जाता था) और JSON Schema।
* आंतरिक development team द्वारा production applications बनाते समय किए गए परीक्षणों के आधार पर अनुमान।
प्रायोजक¶
कीस्टोन प्रायोजक¶
गोल्ड प्रायोजक¶
सिल्वर प्रायोजक¶
विचार¶
"मैं इन दिनों FastAPI का बहुत उपयोग कर रहा/रही हूँ। वास्तव में मैं अपनी team की Microsoft में ML सेवाओं के लिए इसे उपयोग करने की योजना बना रहा/रही हूँ। इनमें से कुछ को मुख्य Windows product और कुछ Office products में इंटीग्रेट किया जा रहा है।"
"हमने FastAPI लाइब्रेरी अपनाई ताकि एक REST सर्वर स्पॉन किया जा सके जिसे अन्दाज़ों/अनुमानों को प्राप्त करने के लिए query किया जा सके।" [Ludwig के लिए]
"Netflix हमारे संकट प्रबंधन ऑर्केस्ट्रेशन framework: Dispatch के ओपन-सोर्स रिलीज़ की घोषणा करते हुए प्रसन्न है!" [FastAPI के साथ बनाया गया]
"यदि कोई production Python API बनाना चाहता है, तो मैं FastAPI की अत्यधिक अनुशंसा करूंगा/करूंगी। यह सुंदरता से डिज़ाइन किया गया है, उपयोग में सरल है और बेहद स्केलेबल है — यह हमारी API-फर्स्ट development रणनीति का मुख्य घटक बन गया है।"
"[...] मैं इन दिनों FastAPI का बहुत उपयोग कर रहा/रही हूँ। [...] वास्तव में मैं अपनी team की Microsoft में ML सेवाओं के लिए इसे उपयोग करने की योजना बना रहा/रही हूँ। इनमें से कुछ को मुख्य Windows product और कुछ Office products में इंटीग्रेट किया जा रहा है."
"हमने FastAPI लाइब्रेरी अपनाई ताकि एक REST सर्वर स्पॉन किया जा सके जिसे अनुमानों को प्राप्त करने के लिए query किया जा सके। [Ludwig के लिए]"
"Netflix हमारे संकट प्रबंधन ऑर्केस्ट्रेशन framework: Dispatch के ओपन-सोर्स रिलीज़ की घोषणा करते हुए प्रसन्न है! [FastAPI के साथ बनाया गया]"
"यदि कोई production Python API बनाना चाहता है, तो मैं FastAPI की अत्यधिक अनुशंसा करूंगा/करूंगी। यह सुंदरता से डिज़ाइन किया गया है, उपयोग में सरल है और बेहद स्केलेबल है, यह हमारी API first development रणनीति का मुख्य घटक बन गया है और हमारे Virtual TAC Engineer जैसे कई ऑटोमेशन्स और सेवाओं को चला रहा है."
FastAPI मिनी डॉक्यूमेंट्री¶
साल 2025 के अंत में एक FastAPI मिनी डॉक्यूमेंट्री रिलीज़ हुई, आप इसे ऑनलाइन देख सकते हैं:
Typer, CLIs का FastAPI¶
यदि आप web API के बजाय टर्मिनल में उपयोग होने वाला CLI ऐप बना रहे हैं, तो Typer देखें।
Typer, FastAPI का छोटा भाई/बहन है। और इसका उद्देश्य CLIs का FastAPI होना है। ⌨️ 🚀
आवश्यकताएँ¶
FastAPI दिग्गजों के कंधों पर खड़ा है:
Installation¶
पहले, uv install करें, और फिर अपने project में FastAPI जोड़ें:
$ uv add "fastapi[standard]"
---> 100%
नोट: सुनिश्चित करें कि आप सभी टर्मिनलों में काम करने के लिए "fastapi[standard]" को उद्धरण-चिह्नों में रखें।
यदि आप pip का उपयोग करना पसंद करते हैं, तो virtual environment के अंदर fastapi[standard] install करें। वैकल्पिक चरणों के लिए installation guide देखें।
उदाहरण¶
इसे बनाएँ¶
main.py file बनाएँ, जिसमें:
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}
नोट:
यदि आप नहीं जानते, तो docs में async और await के बारे में "जल्दी में?" section देखें।
इसे चलाएँ¶
सर्वर को इस कमांड से चलाएँ:
$ uv run 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 file स्वतः पढ़ता है, उसमें FastAPI ऐप का पता लगाता है, और Uvicorn का उपयोग करके सर्वर शुरू करता है।
default रूप से, fastapi dev लोकल development के लिए auto-reload सक्षम करके शुरू होगा।
आप इसके बारे में और पढ़ सकते हैं: FastAPI CLI docs में।
इसे जाँचें¶
अपने ब्राउज़र में http://127.0.0.1:8000/items/5?q=somequery खोलें।
आपको JSON response इस प्रकार दिखेगी:
{"item_id": 5, "q": "somequery"}
आपने पहले ही एक API बना ली है जो:
- paths
/और/items/{item_id}पर HTTP requests स्वीकार करती है। - दोनों 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 request से body प्राप्त करने के लिए main.py file संशोधित करें।
Pydantic की बदौलत, body को standard 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 को दर्शाएगा:

Recap¶
संक्षेप में, आप parameters, body, आदि के प्रकार function parameters के रूप में एक बार घोषित करते हैं।
आप यह standard आधुनिक Python प्रकारों से करते हैं।
आपको किसी नई सिंटैक्स, किसी विशेष लाइब्रेरी के methods या classes, आदि सीखने की आवश्यकता नहीं है।
बस standard Python।
उदाहरण के लिए, एक int के लिए:
item_id: int
या एक अधिक जटिल Item model के लिए:
item: Item
...और केवल उसी एक घोषणा के साथ आपको मिलता है:
- Editor support, जिसमें शामिल है:
- Completion।
- Type checks।
- data का वैधीकरण:
- जब data अमान्य हो तो स्वतः और स्पष्ट त्रुटियाँ।
- गहराई से nested JSON objects के लिए भी वैधीकरण।
- इनपुट data का Conversion: नेटवर्क से Python data और प्रकारों में। इनमें से पढ़ना:
- JSON।
- Path parameters।
- Query parameters।
- Cookies।
- Headers।
- Forms।
- Files।
- आउटपुट data का Conversion: Python data और प्रकारों से नेटवर्क data (JSON के रूप में) में:
- Python प्रकारों का conversion (
str,int,float,bool,list, आदि)। datetimeऑब्जेक्ट्स।UUIDऑब्जेक्ट्स।- डेटाबेस models।
- ...और बहुत कुछ।
- Python प्रकारों का conversion (
- स्वचालित इंटरैक्टिव API दस्तावेज़ीकरण, जिनमें 2 वैकल्पिक यूज़र इंटरफ़ेस शामिल हैं:
- Swagger UI।
- ReDoc।
पिछले कोड उदाहरण पर लौटते हुए, FastAPI यह करेगा:
GETऔरPUTrequests के लिए path मेंitem_idहै, यह सत्यापित करेगा।GETऔरPUTrequests के लिएitem_idका प्रकारintहै, यह सत्यापित करेगा।- यदि नहीं है, तो क्लाइंट को एक उपयोगी, स्पष्ट त्रुटि दिखाई देगी।
GETrequests के लिए यह जाँच करेगा किqनाम का एक वैकल्पिक query parameter है (जैसेhttp://127.0.0.1:8000/items/foo?q=somequery)।- क्योंकि
qparameter= Noneके साथ घोषित है, यह वैकल्पिक है। Noneके बिना यह required होता (जैसेPUTके मामले में body required है)।
- क्योंकि
/items/{item_id}परPUTrequests के लिए, body को JSON के रूप में पढ़ेगा:- यह जाँचेगा कि एक required attribute
nameहै जोstrहोना चाहिए। - यह जाँचेगा कि एक required attribute
priceहै जोfloatहोना चाहिए। - यह जाँचेगा कि एक वैकल्पिक attribute
is_offerहै, जो यदि मौजूद है तोboolहोना चाहिए। - यह सब गहराई से nested JSON objects के लिए भी काम करेगा।
- यह जाँचेगा कि एक required attribute
- JSON से और JSON में स्वतः convert करेगा।
- हर चीज़ को OpenAPI के साथ दस्तावेज़ित करेगा, जिसे निम्न द्वारा उपयोग किया जा सकता है:
- इंटरैक्टिव दस्तावेज़ीकरण प्रणालियाँ।
- कई भाषाओं के लिए स्वचालित क्लाइंट कोड जनरेशन प्रणालियाँ।
- सीधे 2 इंटरैक्टिव दस्तावेज़ीकरण web interfaces प्रदान करेगा।
हमने केवल सतह को छुआ है, लेकिन आपको पहले ही समझ आ गया होगा कि यह सब कैसे काम करता है।
इस पंक्ति को बदलकर देखें:
return {"item_name": item.name, "item_id": item_id}
...यहाँ से:
... "item_name": item.name ...
...यहाँ तक:
... "item_price": item.price ...
...और देखें कि आपका editor attributes को कैसे auto-complete करेगा और उनके प्रकार जानेगा:

अधिक features सहित एक अधिक सम्पूर्ण उदाहरण के लिए, ट्यूटोरियल - यूज़र गाइड देखें।
स्पॉइलर अलर्ट: ट्यूटोरियल - यूज़र गाइड में शामिल है:
- विभिन्न स्थानों से parameters की घोषणा: headers, cookies, form fields और files।
maximum_lengthयाregexजैसी validation constraints कैसे सेट करें।- एक बहुत शक्तिशाली और उपयोग में आसान Dependency Injection सिस्टम।
- सुरक्षा और प्रमाणीकरण, जिसमें OAuth2 के साथ JWT tokens और HTTP Basic auth का समर्थन शामिल है।
- गहराई से nested JSON models घोषित करने की अधिक उन्नत (पर समान रूप से आसान) तकनीकें (Pydantic की बदौलत)।
- Strawberry और अन्य लाइब्रेरीज़ के साथ GraphQL एकीकरण।
- कई अतिरिक्त features (Starlette की बदौलत) जैसे:
- WebSockets
- HTTPX और
pytestपर आधारित अत्यंत आसान टेस्ट्स - CORS
- Cookie Sessions
- ...आदि।
अपनी ऐप deploy करें (वैकल्पिक)¶
आप वैकल्पिक रूप से अपनी FastAPI ऐप को FastAPI Cloud पर एक ही कमांड से deploy कर सकते हैं। 🚀
$ uv run fastapi deploy
Deploying to FastAPI Cloud...
✅ Deployment successful!
🐔 Ready the chicken! Your app is ready at https://myapp.fastapicloud.dev
CLI आपकी FastAPI application को स्वतः पहचान लेगा और उसे क्लाउड पर deploy करेगा। यदि आप logged in नहीं हैं, तो प्रमाणीकरण प्रक्रिया पूरी करने के लिए आपका ब्राउज़र खुलेगा।
बस इतना ही! अब आप उस URL पर अपनी ऐप एक्सेस कर सकते हैं। ✨
FastAPI Cloud के बारे में¶
FastAPI Cloud को FastAPI के ही लेखक और team ने बनाया है।
यह न्यूनतम प्रयास में किसी API को बनाने, deploy करने और एक्सेस करने की प्रक्रिया को सरल बनाता है।
यह FastAPI के साथ ऐप्स बनाने के उसी developer experience को उन्हें क्लाउड में deploy करने तक लाता है। 🎉
FastAPI Cloud, FastAPI and friends ओपन सोर्स projects के लिए मुख्य प्रायोजक और फंडिंग प्रदाता है। ✨
अन्य क्लाउड प्रदाताओं पर deploy करें¶
FastAPI ओपन सोर्स है और standards पर आधारित है। आप FastAPI ऐप्स को किसी भी क्लाउड प्रदाता पर deploy कर सकते हैं।
अपने क्लाउड प्रदाता के गाइड्स का पालन करें और उनके साथ FastAPI ऐप्स deploy करें। 🤓
प्रदर्शन¶
स्वतंत्र TechEmpower बेंचमार्क दिखाते हैं कि Uvicorn के तहत चलने वाले FastAPI applications उपलब्ध सबसे तेज़ Python frameworks में से एक हैं, केवल Starlette और Uvicorn (जो FastAPI द्वारा आंतरिक रूप से उपयोग किए जाते हैं) से नीचे। (*)
इसके बारे में अधिक समझने के लिए, बेंचमार्क्स section देखें।
निर्भरताएँ¶
FastAPI, Pydantic और Starlette पर निर्भर करता है।
standard निर्भरताएँ¶
जब आप uv add "fastapi[standard]" के साथ FastAPI install करते हैं, तो यह standard समूह की वैकल्पिक निर्भरताओं के साथ आता है:
Pydantic द्वारा उपयोग किया गया:
email-validator- ईमेल वैधीकरण के लिए।
Starlette द्वारा उपयोग किया गया:
httpx- यदि आपTestClientका उपयोग करना चाहते हैं तो required।jinja2- यदि आप default टेम्पलेट कॉन्फ़िगरेशन का उपयोग करना चाहते हैं तो required।python-multipart- यदि आप form "parsing" का समर्थन करना चाहते हैं,request.form()के साथ, तो required।
FastAPI द्वारा उपयोग किया गया:
uvicorn- उस सर्वर के लिए जो आपकी application को लोड और सर्व करता है। इसमेंuvicorn[standard]शामिल है, जिसमें high performance serving के लिए कुछ निर्भरताएँ (जैसेuvloop) शामिल हैं।fastapi-cli[standard]-fastapiकमांड प्रदान करने के लिए।- इसमें
fastapi-cloud-cliशामिल है, जो आपको अपनी FastAPI application को FastAPI Cloud पर deploy करने की अनुमति देता है।
- इसमें
standard निर्भरताओं के बिना¶
यदि आप standard वैकल्पिक निर्भरताओं को शामिल नहीं करना चाहते, तो आप uv add "fastapi[standard]" के बजाय uv add fastapi के साथ install कर सकते हैं।
fastapi-cloud-cli के बिना¶
यदि आप standard निर्भरताओं के साथ लेकिन fastapi-cloud-cli के बिना FastAPI install करना चाहते हैं, तो uv add "fastapi[standard-no-fastapi-cloud-cli]" के साथ install कर सकते हैं।
अतिरिक्त वैकल्पिक निर्भरताएँ¶
कुछ अतिरिक्त निर्भरताएँ हैं जिन्हें आप install करना चाहेंगे।
अतिरिक्त वैकल्पिक Pydantic निर्भरताएँ:
pydantic-settings- सेटिंग्स प्रबंधन के लिए।pydantic-extra-types- Pydantic के साथ उपयोग करने के लिए अतिरिक्त प्रकारों हेतु।
अतिरिक्त वैकल्पिक FastAPI निर्भरताएँ:
orjson- यदि आपORJSONResponseउपयोग करना चाहते हैं तो required।ujson- यदि आपUJSONResponseउपयोग करना चाहते हैं तो required।
लाइसेंस¶
यह project MIT license की शर्तों के अंतर्गत लाइसेंस प्राप्त है।











