HTTPException এবং Response Status Code ম্যানেজমেন্ট

Web Development - ফাস্টএপিআই (FastAPI) - FastAPI এর Error Handling এবং Custom Exceptions
204

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_id 42 না হয়।

রিকোয়েস্ট উদাহরণ:

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-র ব্যবহারকারীদের জন্য আরও নির্দিষ্ট এবং সঠিক ত্রুটি বার্তা প্রদান করা সম্ভব হবে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...