Web Development Nested Models এবং Complex Data Structures গাইড ও নোট

308

FastAPI-তে Nested Models এবং Complex Data Structures ব্যবস্থাপনা খুবই সহজ এবং শক্তিশালী। FastAPI Pydantic মডেল ব্যবহার করে বিভিন্ন ধরনের নেস্টেড ডাটা স্ট্রাকচার সমর্থন করে, যা জটিল API অ্যাপ্লিকেশনগুলোর জন্য অত্যন্ত কার্যকর।

এখানে, আমরা দেখব কিভাবে FastAPI তে Nested Models তৈরি করা যায় এবং Complex Data Structures ব্যবস্থাপনা করা যায়।


Nested Models তৈরি করা

Nested Models হল এমন মডেল যেখানে একটি মডেল অন্য মডেলের ভেতরে ব্যবহৃত হয়। FastAPI তে আপনি সহজেই একটি মডেলকে আরেকটি মডেলের মধ্যে রাখতে পারেন।

উদাহরণ: Nested Models

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

# Nested Model: Manufacturer
class Manufacturer(BaseModel):
    name: str
    country: str

# Main Model: Item
class Item(BaseModel):
    name: str
    price: float
    manufacturer: Manufacturer

@app.post("/items/")
def create_item(item: Item):
    return {"item_name": item.name, "item_price": item.price, "manufacturer": item.manufacturer}

এখানে, Item মডেলের মধ্যে Manufacturer মডেলটি nested হিসেবে ব্যবহার করা হয়েছে।

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

POST /items/

{
  "name": "Laptop",
  "price": 1500.00,
  "manufacturer": {
    "name": "TechCorp",
    "country": "USA"
  }
}

রেসপন্স:

{
  "item_name": "Laptop",
  "item_price": 1500.00,
  "manufacturer": {
    "name": "TechCorp",
    "country": "USA"
  }
}

এখানে, manufacturer একটি nested model হিসেবে Item মডেলে উপস্থিত রয়েছে।


Complex Data Structures: List of Nested Models

আপনি FastAPI তে List of Nested Models ব্যবহার করতে পারেন যেখানে একটি মডেল একাধিক ইনস্ট্যান্স ধারণ করবে।

উদাহরণ: List of Nested Models

from fastapi import FastAPI
from pydantic import BaseModel
from typing import List

app = FastAPI()

# Nested Model: Manufacturer
class Manufacturer(BaseModel):
    name: str
    country: str

# Main Model: Item
class Item(BaseModel):
    name: str
    price: float
    manufacturer: Manufacturer

# Complex Data Structure: List of Items
@app.post("/items/")
def create_items(items: List[Item]):
    return {"items": items}

এখানে, List[Item] ব্যবহার করে একাধিক Item মডেল নেওয়া হয়েছে, যার মধ্যে প্রতিটি Item মডেল একটি Manufacturer মডেল ধারণ করে।

রিকোয়েস্ট উদাহরণ (List of Nested Models):

POST /items/

[
  {
    "name": "Laptop",
    "price": 1500.00,
    "manufacturer": {
      "name": "TechCorp",
      "country": "USA"
    }
  },
  {
    "name": "Smartphone",
    "price": 800.00,
    "manufacturer": {
      "name": "MobileTech",
      "country": "India"
    }
  }
]

রেসপন্স:

{
  "items": [
    {
      "name": "Laptop",
      "price": 1500.00,
      "manufacturer": {
        "name": "TechCorp",
        "country": "USA"
      }
    },
    {
      "name": "Smartphone",
      "price": 800.00,
      "manufacturer": {
        "name": "MobileTech",
        "country": "India"
      }
    }
  ]
}

এখানে, items একটি List যা একাধিক Item ধারণ করে, এবং প্রতিটি Item এর মধ্যে Manufacturer মডেলটি nested অবস্থায় রয়েছে।


Complex Data Structures: Dictionary with Nested Models

FastAPI তে Dictionary বা Map ধরনের ডাটা স্ট্রাকচারও ব্যবহার করা যেতে পারে। এখানে আমরা একটি ডিকশনারি ব্যবহার করব যা key-value পেয়ার ধারণ করবে এবং value হবে একটি Nested Model।

উদাহরণ: Dictionary with Nested Models

from fastapi import FastAPI
from pydantic import BaseModel
from typing import Dict

app = FastAPI()

# Nested Model: Manufacturer
class Manufacturer(BaseModel):
    name: str
    country: str

# Main Model: Item
class Item(BaseModel):
    name: str
    price: float
    manufacturer: Manufacturer

# Complex Data Structure: Dictionary of Items
@app.post("/items/")
def create_items(items: Dict[str, Item]):
    return {"items": items}

এখানে, items একটি Dictionary যেটি key (str) এবং value (Item) ধারণ করে।

রিকোয়েস্ট উদাহরণ (Dictionary of Nested Models):

POST /items/

{
  "item1": {
    "name": "Laptop",
    "price": 1500.00,
    "manufacturer": {
      "name": "TechCorp",
      "country": "USA"
    }
  },
  "item2": {
    "name": "Smartphone",
    "price": 800.00,
    "manufacturer": {
      "name": "MobileTech",
      "country": "India"
    }
  }
}

রেসপন্স:

{
  "items": {
    "item1": {
      "name": "Laptop",
      "price": 1500.00,
      "manufacturer": {
        "name": "TechCorp",
        "country": "USA"
      }
    },
    "item2": {
      "name": "Smartphone",
      "price": 800.00,
      "manufacturer": {
        "name": "MobileTech",
        "country": "India"
      }
    }
  }
}

এখানে, items একটি Dictionary যেখানে key হিসেবে item1, item2 ইত্যাদি ব্যবহার করা হয়েছে এবং প্রতিটি key-এর value একটি Item মডেল।


Complex Data Structures with Validation

FastAPI এবং Pydantic ব্যবহার করে আপনি Complex Data Structures এর জন্য validation করতে পারেন। যেমন, আপনি একটি মডেলে minimum length বা range সহ validation যোগ করতে পারেন।

উদাহরণ: Complex Data Structure with Validation

from fastapi import FastAPI
from pydantic import BaseModel, Field
from typing import List

app = FastAPI()

# Nested Model: Manufacturer
class Manufacturer(BaseModel):
    name: str
    country: str

# Main Model: Item with Validation
class Item(BaseModel):
    name: str = Field(..., min_length=3)  # name must have at least 3 characters
    price: float = Field(..., gt=0)  # price must be greater than 0
    manufacturer: Manufacturer

@app.post("/items/")
def create_item(item: Item):
    return {"item_name": item.name, "item_price": item.price, "manufacturer": item.manufacturer}

এখানে, name ফিল্ডে min_length=3 এবং price ফিল্ডে gt=0 (greater than 0) validation করা হয়েছে।

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

{
  "name": "Laptop",
  "price": 1500.00,
  "manufacturer": {
    "name": "TechCorp",
    "country": "USA"
  }
}

রেসপন্স:

{
  "item_name": "Laptop",
  "item_price": 1500.00,
  "manufacturer": {
    "name": "TechCorp",
    "country": "USA"
  }
}

FastAPI তে Nested Models এবং Complex Data Structures ব্যবস্থাপনা খুবই সহজ এবং শক্তিশালী। আপনি সহজেই একাধিক মডেলকে একত্রে ব্যবহার করে জটিল ডাটা স্ট্রাকচার তৈরি করতে পারেন, যেমন Lists, Dictionaries বা Nested Models। এছাড়া, Pydantic এর মাধ্যমে ডাটা ভ্যালিডেশন করে, আপনি ডাটা integrity এবং কোডের নির্ভুলতা নিশ্চিত করতে পারেন। FastAPI এর এই বৈশিষ্ট্যগুলি আপনাকে স্কেলেবল এবং রক্ষণাবেক্ষণযোগ্য API তৈরি করতে সহায়তা করবে।

Content added By
Promotion

Are you sure to start over?

Loading...