FastAPI তে Path Parameters ব্যবহার করে Dynamic Routing তৈরি করা সম্ভব। Path Parameters URL এর অংশ হিসেবে ডাইনামিক ডাটা গ্রহণ করতে ব্যবহৃত হয়। FastAPI স্বয়ংক্রিয়ভাবে Path Parameters এর টাইপ যাচাই করে, যা URL-এ ডাইনামিক পাথ প্যারামিটারগুলির মাধ্যমে ইনপুট ডাটা গ্রহণের প্রক্রিয়াকে সহজ এবং কার্যকর করে তোলে।
এখানে, আমরা দেখব কীভাবে FastAPI তে Path Parameters ব্যবহার করে ডাইনামিক রাউট তৈরি করা যায়।
Path Parameters কী?
Path Parameters হল URL-এ {} ব্র্যাকেটের মধ্যে থাকা ডাইনামিক প্যারামিটার, যা URL থেকে ডাটা গ্রহণ করতে সাহায্য করে। এটি অ্যাপ্লিকেশনের URL-এর নির্দিষ্ট অংশ থেকে ডাটা হ্যান্ডল করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, একটি API যেখানে user_id অথবা item_id URL-এ প্যারামিটার হিসেবে দেওয়া যায়।
Step 1: FastAPI তে Path Parameters দিয়ে Dynamic Routing তৈরি করা
FastAPI-তে Path Parameters ব্যবহারের মাধ্যমে আমরা URL-এ ডাইনামিক প্যারামিটারগুলো গ্রহণ করতে পারি এবং সেই অনুযায়ী রাউট তৈরি করতে পারি।
উদাহরণ: Path Parameters দিয়ে Dynamic Routing
from fastapi import FastAPI
app = FastAPI()
# Path Parameter ব্যবহার
@app.get("/items/{item_id}")
def read_item(item_id: int):
return {"item_id": item_id}
এখানে, {item_id} একটি Path Parameter, এবং item_id আমাদের ফাংশনের আর্গুমেন্ট হিসেবে পাঠানো হবে। FastAPI স্বয়ংক্রিয়ভাবে এই প্যারামিটারটির টাইপ যাচাই করে, কারণ আমরা এটি int টাইপ হিসেবে নির্ধারণ করেছি।
রিকোয়েস্ট উদাহরণ:
GET /items/123
রেসপন্স:
{
"item_id": 123
}
এখানে, item_id প্যারামিটারটি URL থেকে গ্রহণ করা হয়েছে এবং এটি ফাংশনে পাঠানো হয়েছে।
Step 2: Multiple Path Parameters (একাধিক Path Parameters)
FastAPI তে আপনি একাধিক Path Parameters একসাথে ব্যবহার করতে পারেন। এটি ডাইনামিক রাউটিং আরও শক্তিশালী এবং ফ্লেক্সিবল করে তোলে।
উদাহরণ: একাধিক Path Parameters
from fastapi import FastAPI
app = FastAPI()
@app.get("/users/{user_id}/items/{item_id}")
def read_user_item(user_id: int, item_id: int):
return {"user_id": user_id, "item_id": item_id}
এখানে, আমরা দুটি Path Parameters ব্যবহার করেছি: user_id এবং item_id। FastAPI স্বয়ংক্রিয়ভাবে এগুলোর টাইপ যাচাই করে এবং রিকোয়েস্টের মান অনুযায়ী এই প্যারামিটারগুলো ফাংশনে পাঠানো হয়।
রিকোয়েস্ট উদাহরণ:
GET /users/101/items/2001
রেসপন্স:
{
"user_id": 101,
"item_id": 2001
}
এখানে, আমরা user_id এবং item_id উভয় প্যারামিটারকেই URL থেকে গ্রহণ করেছি এবং সেগুলোকে রাউটিং ফাংশনে পাঠিয়েছি।
Step 3: Path Parameters-এ Default Values এবং Validation
FastAPI তে Path Parameters এর জন্য default values এবং validation নির্ধারণ করা যায়। যেমন, আপনি একটি Path Parameter কে ঐচ্ছিক (Optional) বা একটি নির্দিষ্ট সীমা (Range) মধ্যে সীমাবদ্ধ করতে পারেন।
উদাহরণ: Default Values এবং Validation সহ Path Parameters
from fastapi import FastAPI, Path
app = FastAPI()
@app.get("/items/{item_id}")
def read_item(item_id: int = Path(..., ge=1, le=1000)): # ge=1, le=1000 validation
return {"item_id": item_id}
এখানে:
ge=1: এটি নিশ্চিত করবে যেitem_id১ বা তার বেশি হবে।le=1000: এটি নিশ্চিত করবে যেitem_id১০০০ বা তার কম হবে।
রিকোয়েস্ট উদাহরণ:
GET /items/50
রেসপন্স:
{
"item_id": 50
}
ভুল রিকোয়েস্ট উদাহরণ:
GET /items/1500
রেসপন্স (ত্রুটি):
{
"detail": [
{
"loc": ["path", "item_id"],
"msg": "ensure this value is less than or equal to 1000",
"type": "value_error.number.not_le"
}
]
}
এখানে, item_id ১০০০ এর বেশি হলে FastAPI স্বয়ংক্রিয়ভাবে ত্রুটি দেখাবে।
Step 4: Path Parameters এবং Query Parameters একসাথে ব্যবহার
FastAPI তে Path Parameters এবং Query Parameters একসাথে ব্যবহার করা যেতে পারে। Path Parameters URL-এর অংশ হিসেবে পাঠানো হয়, আর Query Parameters URL-এর শেষে ? দিয়ে অতিরিক্ত ডাটা পাঠানোর জন্য ব্যবহৃত হয়।
উদাহরণ: Path Parameters এবং Query Parameters একসাথে
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "query": q}
এখানে:
item_idহল Path Parameterqহল Query Parameter
রিকোয়েস্ট উদাহরণ:
GET /items/123?q=example
রেসপন্স:
{
"item_id": 123,
"query": "example"
}
এখানে, item_id Path Parameter হিসেবে পাঠানো হয়েছে এবং q Query Parameter হিসেবে পাঠানো হয়েছে।
Step 5: Path Parameters এর জন্য Custom Error Handling
FastAPI তে আপনি Path Parameters-এর জন্য কাস্টম error handling সেটআপ করতে পারেন। এর মাধ্যমে আপনি যদি কোনো অবৈধ ইনপুট পান, তবে একটি কাস্টম ত্রুটি মেসেজ ফেরত পাঠাতে পারেন।
উদাহরণ: কাস্টম Error Handling
from fastapi import FastAPI, HTTPException
app = FastAPI()
@app.get("/items/{item_id}")
def read_item(item_id: int):
if item_id < 1 or item_id > 100:
raise HTTPException(status_code=400, detail="Item ID must be between 1 and 100")
return {"item_id": item_id}
এখানে, যদি item_id ১ থেকে ১০০ এর বাইরে থাকে, তবে FastAPI একটি 400 Bad Request ত্রুটি মেসেজ সহ কাস্টম ত্রুটি দেখাবে।
রিকোয়েস্ট উদাহরণ:
GET /items/150
রেসপন্স:
{
"detail": "Item ID must be between 1 and 100"
}
FastAPI তে Path Parameters ব্যবহার করে ডাইনামিক রাউটিং তৈরি করা সহজ এবং কার্যকর। আপনি Path Parameters এর মাধ্যমে ডাইনামিক ডাটা গ্রহণ করতে পারেন এবং Validation ও Default Values ব্যবহার করে ইনপুট ডাটাকে যাচাই করতে পারেন। এর মাধ্যমে আপনি আরও স্কেলেবল এবং কার্যকর API তৈরি করতে সক্ষম হবেন।
Read more