Route তৈরি করা এবং কনফিগার করা

Web Development - ফাস্টএপিআই (FastAPI) - FastAPI এর বেসিক কনফিগারেশন
202

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-এর সঠিক ব্যবহার ডেভেলপমেন্টে কার্যক্ষমতা এবং পরিষ্কার কোড বজায় রাখতে সাহায্য করে।

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

Are you sure to start over?

Loading...