FastAPI-তে Route (এন্ডপয়েন্ট) তৈরি করা API ডেভেলপমেন্টের একটি প্রধান অংশ। Route-এর মাধ্যমে অ্যাপ্লিকেশন নির্দিষ্ট URL এবং HTTP মেথডের (GET, POST, PUT, DELETE) জন্য কার্যকলাপ পরিচালনা করে।
Route তৈরি করা
FastAPI-তে একটি Route তৈরি করতে, ডেকোরেটর এবং পাথ প্যারামিটার ব্যবহার করা হয়।
উদাহরণ:
from fastapi import FastAPI
app = FastAPI()
# রুট এন্ডপয়েন্ট (Root Endpoint)
@app.get("/")
def read_root():
return {"message": "Welcome to FastAPI"}
# ডাইনামিক এন্ডপয়েন্ট
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "query": q}
ব্যাখ্যা:
@app.get("/"):
এটি একটি GET রিকোয়েস্টের জন্য রুট এন্ডপয়েন্ট তৈরি করে।@app.get("/items/{item_id}"):
এখানে{item_id}একটি ডাইনামিক পাথ প্যারামিটার, যা URL থেকে ডাটা গ্রহণ করে।
Route কনফিগার করা
১. স্ট্যাটিক এবং ডাইনামিক Route
স্ট্যাটিক Route:
একটি নির্দিষ্ট পাথের জন্য ব্যবহৃত হয়।@app.get("/about") def about(): return {"info": "This is a static route"}ডাইনামিক Route:
পাথ প্যারামিটার ব্যবহার করে ডাইনামিক ডাটা গ্রহণ করে।@app.get("/users/{user_id}") def get_user(user_id: int): return {"user_id": user_id}
২. কোয়েরি প্যারামিটার যুক্ত করা
Route-এ কোয়েরি প্যারামিটার ব্যবহার করে অতিরিক্ত ডাটা গ্রহণ করা যায়।
@app.get("/search")
def search_items(keyword: str, limit: int = 10):
return {"keyword": keyword, "limit": limit}
উদাহরণ URL:
http://127.0.0.1:8000/search?keyword=fastapi&limit=5
রেসপন্স:
{
"keyword": "fastapi",
"limit": 5
}
৩. Route-এ HTTP মেথড নির্ধারণ করা
FastAPI বিভিন্ন HTTP মেথডের জন্য Route সমর্থন করে।
- GET: ডাটা পড়ার জন্য।
- POST: ডাটা তৈরি করার জন্য।
- PUT: ডাটা আপডেট করার জন্য।
- DELETE: ডাটা মুছে ফেলার জন্য।
@app.post("/create-item/")
def create_item(name: str):
return {"item_name": name}
@app.put("/update-item/{item_id}")
def update_item(item_id: int, name: str):
return {"item_id": item_id, "updated_name": name}
@app.delete("/delete-item/{item_id}")
def delete_item(item_id: int):
return {"message": f"Item {item_id} deleted"}
Route মডুলার করা
Route-গুলোকে মডুলার করতে APIRouter ব্যবহার করা হয়।
Route ফাইল: routes/example_routes.py
from fastapi import APIRouter
router = APIRouter()
@router.get("/example")
def example_route():
return {"message": "This is an example route"}
@router.post("/example")
def create_example(name: str):
return {"message": f"Example created with name {name}"}
Route অ্যাপের সাথে যুক্ত করা: main.py
from fastapi import FastAPI
from app.routes import example_routes
app = FastAPI()
# Route যুক্ত করা
app.include_router(example_routes.router, prefix="/api/v1")
এন্ডপয়েন্ট উদাহরণ:
- GET:
/api/v1/example - POST:
/api/v1/example
Route-এ কাস্টমাইজড প্যারামিটার
কাস্টম HTTP এক্সসেপশন:
from fastapi import HTTPException
@app.get("/users/{user_id}")
def get_user(user_id: int):
if user_id < 1:
raise HTTPException(status_code=400, detail="Invalid user ID")
return {"user_id": user_id}
ডিফল্ট প্যারামিটার:
@app.get("/items/")
def read_items(limit: int = 10, offset: int = 0):
return {"limit": limit, "offset": offset}
Route ডকুমেন্টেশন যুক্ত করা
Docstring ব্যবহার:
@app.get("/items/{item_id}", summary="Get an item", description="Retrieve an item by its ID.")
def read_item(item_id: int):
"""
Args:
item_id (int): The ID of the item to retrieve.
Returns:
dict: The item details.
"""
return {"item_id": item_id}
ডেকোরেটরের প্যারামিটার ব্যবহার:
@app.post("/create-item/", summary="Create a new item")
def create_item(name: str):
return {"item_name": name}
Route-এর জন্য Swagger UI এবং ReDoc
FastAPI স্বয়ংক্রিয়ভাবে Route-এর ডকুমেন্টেশন তৈরি করে।
Swagger UI: http://127.0.0.1:8000/docs
ReDoc: http://127.0.0.1:8000/redoc
FastAPI-তে Route তৈরি এবং কনফিগার করা সহজ এবং শক্তিশালী। এর মডুলার ডিজাইন বড় অ্যাপ্লিকেশন তৈরি ও পরিচালনা সহজ করে তোলে। Route-এর সঠিক ব্যবহার ডেভেলপমেন্টে কার্যক্ষমতা এবং পরিষ্কার কোড বজায় রাখতে সাহায্য করে।
Read more