FastAPI Introduction (পরিচিতি)
FastAPI বর্তমান সময়ের সবচেয়ে দ্রুতগতির (high-performance) এবং আধুনিক ওয়েব ফ্রেমওয়ার্কগুলোর একটি। এটি মূলত Python 3.8+ এর আধুনিক ফিচারসমূহ ব্যবহার করে তৈরি করা হয়েছে।
১. FastAPI কি এবং এটি কেন অনন্য?
FastAPI হলো একটি আধুনিক, দ্রুতগতির (High Performance), ওয়েব ফ্রেমওয়ার্ক যার মাধ্যমে Python ব্যবহার করে API তৈরি করা হয়। এর গতির মূল কারণ এটি Starlette (web parts এর জন্য) এবং Pydantic (data mapping এর জন্য) এর উপর ভিত্তি করে তৈরি।
কেন FastAPI স্পেশাল?
- অবিশ্বাস্য গতি (Furious Speed): এটি Go এবং NodeJS এর সমতূল্য গতি দিতে সক্ষম। Python ফ্রেমওয়ার্কের মধ্যে এটি অন্যতম দ্রুততম।
- ফাস্ট কোডিং (Fast to Code): এটি ডেভেলপারদের উৎপাদনশীলতা ২০০% থেকে ৩০০% পর্যন্ত বৃদ্ধি করে।
- কম বাগ (Fewer Bugs): অটোমেটিক ডেটা ভ্যালিডেশনের কারণে মানুষের করা প্রায় ৪০% ভুল কমে যায়।
- ইন্টুইটিভ (Intuitive): এটি কোড লেখার সময় অসাধারণ এডিটর সাপোর্ট (Autocompletion/IntelliSense) দেয়।
- সহজ (Easy): এটি শেখা এবং ব্যবহার করা খুব সহজ। ডকুমেন্টেশন পড়তে কম সময় লাগে।
- প্রডাকশন রেডি (Production Ready): এটি অটোমেটিক ইন্টারঅ্যাক্টিভ ডকুমেন্টেশন (Swagger/OpenAPI) তৈরি করে।
২. FastAPI vs Flask vs Django
সঠিক ফ্রেমওয়ার্ক বেছে নেওয়া গুরুত্বপূর্ণ:
| ফিাউচার | Django | Flask | FastAPI |
|---|---|---|---|
| গতি (Speed) | ধীর (Slow) | মাঝারি (Medium) | খুব দ্রুত (Very Fast) |
| ধরন (Type) | Full-stack (বড় প্রজেক্ট) | Micro-framework | Modern, Async API focused |
| শিখতে কেমন? | কঠিন | সহজ | খুব সহজ |
| ডকুমেন্টেশন | ম্যানুয়াল | ম্যানুয়াল | অটোমেটিক (Swagger) |
| Async সাপোর্ট | সীমিত (নতুন যোগ হয়েছে) | সীমিত | নেটিভ (সহজাত) |
NOTE
আপনি যদি আধুনিক, উচ্চ-ক্ষমতাসম্পন্ন এবং দ্রুত লিনিয়ার অ্যাপ্লিকেশন বা মাইক্রোসার্ভিস তৈরি করতে চান, তবে FastAPI সেরা পছন্দ।
৩. Installation (সেটআপ)
FastAPI শুরু করার জন্য আপনার কম্পিউটারে Python (3.8+) থাকতে হবে।
৩.১ ভার্চুয়াল এনভায়রনমেন্ট তৈরি (Recommended)
প্রজেক্টের লাইব্রেরিগুলোকে আলাদা রাখতে ভার্চুয়াল এনভায়রনমেন্ট ব্যবহার করা বুদ্ধিমানের কাজ:
# Windows
python -m venv venv
venv\Scripts\activate
# Mac/Linux
python3 -m venv venv
source venv/bin/activate৩.২ FastAPI এবং Uvicorn ইন্সটল করা
আমাদের প্রধানত দুটি জিনিস লাগবে:
fastapi: ফ্রেমওয়ার্কটি নিজে।uvicorn: একটি লাইটওয়েট ASGI সার্ভার যা আমাদের অ্যাপলিকেশনটি রান করবে।
pip install fastapi uvicorn৪. Uvicorn কি এবং এর ভূমিকা?
Python-এ সাধারণত দুই ধরনের ওয়েব সার্ভার ইন্টারফেস থাকে:
- WSGI (Web Server Gateway Interface): পুরনো পদ্ধতি (Django/Flask ব্যবহার করে)। এটি একটি সময়ে একটি রিকোয়েস্ট প্রসেস করে।
- ASGI (Asynchronous Server Gateway Interface): আধুনিক পদ্ধতি। এটি একসাথে অনেকগুলো রিকোয়েস্ট (Asynchronous) হ্যান্ডেল করতে পারে।
Uvicorn হলো একটি ASGI সার্ভার। FastAPI যেহেতু এসিনক্রোনাস (Async) কোড সাপোর্ট করে, তাই এটি রান করার জন্য Uvicorn-এর প্রয়োজন হয়।
৫. প্রথম "Hello World" API
চলুন আমাদের প্রথম API তৈরি করি। main.py নামে একটি ফাইল তৈরি করুন এবং নিচের কোডটি লিখুন:
from fastapi import FastAPI
# ১. একটি FastAPI ইনস্ট্যান্স তৈরি করা
app = FastAPI()
# ২. একটি পাথ অপারেশন ডেকোরেটর (Path Operation Decorator)
@app.get("/")
async def root():
# ৩. একটি পাথ অপারেশন ফাংশন
return {"message": "Hello World"}কোডটির প্রতিটি লাইনের ব্যাখ্যা:
from fastapi import FastAPI: FastAPI ক্লাসটি ইম্পোর্ট করা হয়েছে যা আপনার অ্যাপের মূল ভিত্তি।app = FastAPI(): এটি হলো আপনার অ্যাপ্লিকেশনের মূল ইনস্ট্যান্স। এইappঅবজেক্টের মাধ্যমেই আপনি সব রাউট এবং কনফিগারেশন করবেন।@app.get("/"):@appহলো ডেকোরেটর।.getমানে হলো এটি একটি HTTP GET রিকোয়েস্ট রিসিভ করবে।"/"হলো পাথ (URL path)। অর্থাৎ হোম পেজে গেলে এই ফাংশনটি কাজ করবে।
async def root():asyncকিওয়ার্ডটি ফাংশনটিকে এসিনক্রোনাস করে তোলে, যা পারফরম্যান্স বাড়ায়।rootহলো ফাংশনের নাম।
return {"message": "Hello World"}: আপনি একটি Python ডিকশনারি রিটার্ন করছেন। FastAPI অটোমেটিক এটিকে JSON ফরম্যাটে রূপান্তর করে ব্রাউজারে পাঠিয়ে দেবে।
৬. সার্ভার রান করা
আপনার টার্মিনালে নিচের কমান্ডটি লিখুন:
uvicorn main:app --reloadকমান্ডটির ব্যাখ্যা:
main: আপনার ফাইলের নাম (main.py)।app: ফাইলের ভেতরে থাকা FastAPI ইনস্ট্যান্সের নাম (app = FastAPI())।--reload: এটি একটি অসাধারণ ফিচার। আপনি কোডে কোনো পরিবর্তন করে সেভ করলেই সার্ভার অটোমেটিক রিস্টার্ট হবে। (এটি শুধু ডেভেলপমেন্টের সময় ব্যবহার করবেন)।
আউটপুট (Terminal):
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)এখন আপনার ব্রাউজারে http://127.0.0.1:8000 লিঙ্কে যান। আপনি দেখতে পাবেন:
{"message": "Hello World"}৭. অটোমেটিক ইন্টারঅ্যাক্টিভ ডকুমেন্টেশন (The Magic)
FastAPI-র সেরা ফিচারগুলোর একটি হলো এর অটোমেটিক ডকুমেন্টেশন।
১. Swagger UI: ব্রাউজারে যান http://127.0.0.1:8000/docs লিঙ্কে। এখানে আপনি আপনার সব API দেখতে পাবেন এবং সরাসরি সেখান থেকে টেস্ট করতে পারবেন। ২. ReDoc: ব্রাউজারে যান http://127.0.0.1:8000/redoc লিঙ্কে। এটি আরও প্রফেশনাল এবং ক্লিন ডকুমেন্টেশন দেখায়।
৮. গুরুত্বপূর্ণ টার্মস (Important Terms)
- Endpoint (এন্ডপয়েন্ট): কোনো URL এর শেষ অংশ (যেমন:
/users,/items)। - Path Operation: কোডের সেই অংশ যা কোনো নির্দিষ্ট পাথ এবং HTTP মেথড (যেমন: GET, POST) হ্যান্ডেল করে।
- JSON: JavaScript Object Notation। এটি ইন্টারনেটে ডেটা আদান-প্রদানের প্রধান এবং স্ট্যান্ডার্ড ফরম্যাট।
৯. Practice Exercises (অনুশীলন)
১. FastAPI এবং Uvicorn সাকসেসফুলি ইন্সটল করুন। ২. একটি API তৈরি করুন যা /welcome পাথে গেলে {"message": "Welcome to FastAPI world!"} রিটার্ন করবে। ৩. সার্ভার রান করা অবস্থায় কোড পরিবর্তন করে দেখুন --reload ফিচারটি কীভাবে কাজ করে। ৪. Swagger UI (/docs) চেক করে দেখুন।
পরবর্তী ধাপ
অভিনন্দন! আপনি FastAPI-র দুনিয়ায় পা রেখেছেন। পরবর্তী চ্যাপ্টারে আমরা শিখবো Routing & Parameters - কীভাবে ডায়নামিক URL হ্যান্ডেল করতে হয় এবং ডেটা রিসিভ করতে হয়।