FastAPI তে HTTPException এবং Response Status Code ম্যানেজমেন্ট অত্যন্ত গুরুত্বপূর্ণ, কারণ এগুলোর মাধ্যমে আপনি API-র বিভিন্ন সাড়া (response) এবং ত্রুটি (error) হ্যান্ডলিং করতে পারেন। FastAPI তে HTTPException ব্যবহার করে কাস্টম ত্রুটি বার্তা প্রদান করা যায় এবং Response Status Code এর মাধ্যমে বিভিন্ন HTTP স্ট্যাটাস কোড সেট করা যায়।
এখানে আমরা দেখব কিভাবে FastAPI তে HTTPException ব্যবহার করে কাস্টম ত্রুটি বার্তা পাঠানো যায় এবং Response Status Code কাস্টমাইজ করা যায়।
HTTPException
FastAPI তে HTTPException ক্লাসটি ব্যবহার করে কাস্টম ত্রুটি (error) বার্তা এবং স্ট্যাটাস কোড পাঠানো যায়। এটি একটি বিশেষ ক্লাস যা HTTP স্ট্যাটাস কোড এবং ত্রুটি বার্তা প্রদান করতে সহায়ক।
উদাহরণ: HTTPException ব্যবহার
from fastapi import FastAPI, HTTPException
app = FastAPI()
@app.get("/items/{item_id}")
def read_item(item_id: int):
if item_id != 42:
raise HTTPException(status_code=404, detail="Item not found")
return {"item_id": item_id, "name": "Item 42"}
এখানে:
HTTPExceptionক্লাসের মাধ্যমে 404 Not Found স্ট্যাটাস কোড এবং "Item not found" ত্রুটি বার্তা প্রদান করা হয়েছে যদিitem_id42 না হয়।
রিকোয়েস্ট উদাহরণ:
GET /items/100
রেসপন্স:
{
"detail": "Item not found"
}
Response Status Code কাস্টমাইজেশন
FastAPI তে আপনি সহজেই রেসপন্স স্ট্যাটাস কোড কাস্টমাইজ করতে পারেন। এটি status_code প্যারামিটার ব্যবহার করে করা হয়। FastAPI ডিফল্টভাবে 200 OK রেসপন্স স্ট্যাটাস কোড প্রদান করে, তবে আপনি যেকোনো স্ট্যাটাস কোড সেট করতে পারেন।
উদাহরণ: Response Status Code কাস্টমাইজেশন
from fastapi import FastAPI
from fastapi.responses import JSONResponse
app = FastAPI()
@app.get("/custom_response_status/")
def custom_response_status():
return JSONResponse(content={"message": "Created successfully!"}, status_code=201)
এখানে:
status_code=201ব্যবহার করে কাস্টম রেসপন্স স্ট্যাটাস কোড 201 Created প্রদান করা হয়েছে।
রেসপন্স:
{
"message": "Created successfully!"
}
HTTP Status Code: 201 (Created)
HTTPException সহ Custom Headers এবং Status Code
FastAPI তে HTTPException এর মাধ্যমে কাস্টম হেডার এবং স্ট্যাটাস কোড সহ ত্রুটি বার্তা পাঠানো যায়। নিচে কিভাবে কাস্টম হেডারসহ ত্রুটি পাঠানো যায় তা দেখানো হয়েছে।
উদাহরণ: HTTPException সহ Custom Headers
from fastapi import FastAPI, HTTPException
app = FastAPI()
@app.get("/error_with_header/")
def error_with_header():
raise HTTPException(
status_code=403,
detail="Access forbidden",
headers={"X-Error": "There goes my error"}
)
এখানে:
headersপ্যারামিটার ব্যবহার করে কাস্টম হেডারX-Errorপাঠানো হয়েছে।
রেসপন্স:
{
"detail": "Access forbidden"
}
HTTP Status Code: 403 (Forbidden)
Headers:
X-Error: There goes my error
Validating Query Parameters with HTTPException
আপনি যদি Query Parameters এর মাধ্যমে ইনপুট গ্রহণ করেন এবং সেগুলোর ভ্যালিডেশন করতে চান, তবে HTTPException ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি যদি একটি limit প্যারামিটার গ্রহণ করেন এবং সেটির মান সঠিক না হয়, তাহলে ত্রুটি ফিরিয়ে দিতে পারেন।
উদাহরণ: Query Parameter Validation
from fastapi import FastAPI, HTTPException
app = FastAPI()
@app.get("/items/")
def get_items(limit: int = 10):
if limit > 100:
raise HTTPException(status_code=400, detail="Limit exceeds maximum allowed value of 100")
return {"limit": limit}
এখানে:
limitপ্যারামিটার যদি 100 এর বেশি হয়, তবে 400 Bad Request রেসপন্স কোড সহ কাস্টম ত্রুটি বার্তা প্রদান করা হবে।
রিকোয়েস্ট উদাহরণ:
GET /items/?limit=200
রেসপন্স:
{
"detail": "Limit exceeds maximum allowed value of 100"
}
HTTPException with Validation Error for Request Body
FastAPI তে আপনি Request Body (যেমন JSON) ভ্যালিডেশন করতে Pydantic Model ব্যবহার করেন। যদি ইনপুট ডাটা ভুল হয়, FastAPI স্বয়ংক্রিয়ভাবে একটি ত্রুটি প্রদান করবে।
উদাহরণ: Request Body Validation Error
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
app = FastAPI()
@app.post("/create-item/")
def create_item(item: Item):
if item.price < 0:
raise HTTPException(status_code=400, detail="Price must be greater than or equal to 0")
return {"item_name": item.name, "item_price": item.price}
এখানে:
Itemমডেলেরpriceফিল্ডের জন্যprice >= 0ভ্যালিডেশন করা হয়েছে।- যদি
priceঋণাত্মক মান (negative value) হয়, তবে 400 Bad Request ত্রুটি ফেরত পাঠানো হবে।
রিকোয়েস্ট উদাহরণ:
{
"name": "Laptop",
"price": -500
}
রেসপন্স:
{
"detail": "Price must be greater than or equal to 0"
}
FastAPI তে HTTPException এবং Response Status Code ব্যবস্থাপনা খুবই সহজ এবং শক্তিশালী। HTTPException ক্লাস ব্যবহার করে আপনি কাস্টম ত্রুটি বার্তা এবং HTTP স্ট্যাটাস কোড দিতে পারেন, যা API-র রেসপন্স হ্যান্ডলিংয়ের জন্য খুবই কার্যকর। Response Status Code কাস্টমাইজ করার মাধ্যমে আপনি রেসপন্সের মান সঠিকভাবে সেট করতে পারবেন এবং এর মাধ্যমে API-র ব্যবহারকারীদের জন্য আরও নির্দিষ্ট এবং সঠিক ত্রুটি বার্তা প্রদান করা সম্ভব হবে।
Read more