Path Parameters এবং Type Validation

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

FastAPI তে Path Parameters এর মাধ্যমে URL-এর অংশ হিসেবে ডাটা গ্রহণ করা হয় এবং Type Validation এর মাধ্যমে ডাটার টাইপ স্বয়ংক্রিয়ভাবে যাচাই করা হয়। FastAPI-এর টাইপ সিস্টেম এবং পিডেন্টিক (Pydantic) এর সাহায্যে এটি অত্যন্ত সহজ এবং শক্তিশালী হয়ে ওঠে।


Path Parameters ব্যবস্থাপনা

Path Parameters URL পাথের অংশ হিসেবে ডাটা পাঠানোর উপায়। FastAPI-তে Path Parameters ব্যবহার করতে {} ব্র্যাকেটের মধ্যে প্যারামিটার ডিফাইন করা হয়।

উদাহরণ:

from fastapi import FastAPI

app = FastAPI()

@app.get("/items/{item_id}")
def read_item(item_id: int):
    return {"item_id": item_id}

এখানে, item_id হল Path Parameter এবং এটি URL থেকে ইনপুট হিসেবে গ্রহণ করা হয়। FastAPI স্বয়ংক্রিয়ভাবে এই প্যারামিটারটির টাইপ যাচাই করে, যেহেতু এখানে item_id একটি int টাইপ হিসেবে ডিফাইন করা হয়েছে।

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

GET /items/123

রেসপন্স:

{
  "item_id": 123
}

এখানে, item_id স্বয়ংক্রিয়ভাবে int হিসাবে পার্স করা হবে।


Type Validation

FastAPI-তে Path Parameters এবং Query Parameters উভয়ের জন্যই টাইপ যাচাই অত্যন্ত সহজ। প্যারামিটারটির টাইপ ডিফাইন করলে, FastAPI স্বয়ংক্রিয়ভাবে ইনপুট ডাটার যাচাই করে এবং যদি টাইপ মিলে না যায়, তাহলে এটি একটি ত্রুটি প্রদান করবে।

উদাহরণ: টাইপ যাচাই সহ Path Parameter

from fastapi import FastAPI

app = FastAPI()

@app.get("/items/{item_id}")
def read_item(item_id: int):
    return {"item_id": item_id}

এখানে, item_id টাইপ int হিসেবে নির্ধারিত, এবং যদি ব্যবহারকারী কোনো স্ট্রিং পাঠায়, FastAPI স্বয়ংক্রিয়ভাবে ত্রুটি দেখাবে।

রিকোয়েস্ট উদাহরণ (ভুল টাইপ):

GET /items/abc

রেসপন্স (ত্রুটি):

{
  "detail": [
    {
      "loc": ["path", "item_id"],
      "msg": "value is not a valid integer",
      "type": "type_error.integer"
    }
  ]
}

এখানে, FastAPI নিশ্চিত করেছে যে item_id একটি সংখ্যা হওয়া উচিত, এবং এটি একটি ত্রুটি দেখিয়েছে কারণ পাঠানো মান (abc) সংখ্যা নয়।


Path Parameters-এর বিভিন্ন টাইপের Validation

FastAPI আপনাকে বিভিন্ন টাইপের Path Parameters ব্যবহার করার সুযোগ দেয়, যেমন int, str, float, bool ইত্যাদি। প্রতিটি টাইপের জন্য FastAPI নিজেই ভ্যালিডেশন করে থাকে।

উদাহরণ: বিভিন্ন টাইপের Path Parameter

from fastapi import FastAPI

app = FastAPI()

@app.get("/items/{item_id}")
def read_item(item_id: int):
    return {"item_id": item_id}

@app.get("/user/{username}")
def get_user(username: str):
    return {"username": username}

@app.get("/price/{price}")
def get_price(price: float):
    return {"price": price}

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

  1. GET /items/123
    রেসপন্স:

    {"item_id": 123}
    
  2. GET /user/johndoe
    রেসপন্স:

    {"username": "johndoe"}
    
  3. GET /price/19.99
    রেসপন্স:

    {"price": 19.99}
    

টাইপ যাচাই:

  1. GET /items/abc: টাইপ int হওয়ার কারণে ত্রুটি।
  2. GET /user/123: টাইপ str হওয়ার কারণে এটি সঠিকভাবে পাস হবে।
  3. GET /price/abc: টাইপ float হওয়ার কারণে ত্রুটি।

Path Parameters-এর জন্য কাস্টম টাইপ Validation

আপনি নিজের কাস্টম টাইপও তৈরি করতে পারেন এবং FastAPI তাতে টাইপ যাচাই চালাতে পারে। যেমন, আপনি কোনো নির্দিষ্ট প্যাটার্নের জন্য টাইপ যাচাই করতে পারেন।

উদাহরণ: কাস্টম টাইপ Validation

from fastapi import FastAPI, Path
from pydantic import constr

app = FastAPI()

# কাস্টম টাইপ
@app.get("/items/{item_code}")
def read_item(item_code: constr(regex=r"^[A-Za-z0-9_]+$")):
    return {"item_code": item_code}

এখানে, item_code একটি কাস্টম টাইপ যা শুধুমাত্র অক্ষর, সংখ্যা এবং আন্ডারস্কোর (_) অনুমোদন করে। এর জন্য আমরা constr(regex=...) ব্যবহার করেছি, যা একটি নিয়মিত অভিব্যক্তির মাধ্যমে টাইপ যাচাই করে।

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

GET /items/abc_123
রেসপন্স:

{
  "item_code": "abc_123"
}

GET /items/abc!123
রেসপন্স:

{
  "detail": [
    {
      "loc": ["path", "item_code"],
      "msg": "string does not match regex \"^[A-Za-z0-9_]+$\"",
      "type": "value_error.str.regex"
    }
  ]
}

Path Parameters-এ অন্যান্য সিমান্ত (Constraints)

FastAPI-তে আপনি Path Parameters-এর জন্য min, max, gt, lt, ge, le ইত্যাদি সিমান্ত (constraints) ব্যবহার করতে পারেন।

উদাহরণ: সিমান্ত যুক্ত Path Parameter

from fastapi import FastAPI, Path

app = FastAPI()

@app.get("/items/{item_id}")
def read_item(item_id: int = Path(..., gt=0, le=100)):
    return {"item_id": item_id}

এখানে, item_id অবশ্যই 0 এর বেশি এবং 100 এর সমান বা কম হতে হবে।

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

GET /items/50
রেসপন্স:

{
  "item_id": 50
}

GET /items/150
রেসপন্স:

{
  "detail": [
    {
      "loc": ["path", "item_id"],
      "msg": "ensure this value is less than or equal to 100",
      "type": "value_error.number.not_le"
    }
  ]
}

FastAPI তে Path Parameters এবং Type Validation ব্যবস্থাপনা অত্যন্ত সহজ এবং শক্তিশালী। Path Parameters-এর জন্য টাইপ যাচাই স্বয়ংক্রিয়ভাবে পরিচালিত হয় এবং যদি টাইপ বা কাস্টম কনস্ট্রেইন্টে ত্রুটি ঘটে, FastAPI তা দ্রুত সনাক্ত করে এবং ডেভেলপারকে ত্রুটির বিষয়ে জানায়। এই বৈশিষ্ট্য FastAPI কে আরও কার্যক্ষম এবং ব্যবহারবান্ধব করে তোলে।

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

Are you sure to start over?

Loading...