Pydantic হলো একটি ডাটা ভ্যালিডেশন এবং ডাটা মডেলিং লাইব্রেরি, যা Python-এর জন্য তৈরি। এটি FastAPI-এর জন্য একটি গুরুত্বপূর্ণ অংশ, কারণ এটি FastAPI অ্যাপ্লিকেশনগুলির জন্য ডাটা যাচাই, টাইপ এনোটেশন এবং ডাটা ট্রান্সফার সহজ করে তোলে। FastAPI এবং Pydantic একসাথে কাজ করে ইনপুট ডাটার ভ্যালিডেশন, সঠিক টাইপ যাচাই এবং ডাটা মডেলিং অত্যন্ত দ্রুত এবং কার্যকরভাবে সম্পাদন করতে।
Pydantic কী?
Pydantic একটি Python লাইব্রেরি যা ডাটা ভ্যালিডেশন এবং ডাটা পার্সিং এর জন্য ব্যবহৃত হয়। Pydantic, Python-এর টাইপ অ্যানোটেশন (Type Annotation) ব্যবহার করে ডাটা ভ্যালিডেশন এবং টাইপ যাচাই সম্পাদন করে, যা কোডের স্বচ্ছতা এবং নিরাপত্তা বাড়ায়।
Pydantic ব্যবহারের মাধ্যমে আপনি ডাটা মডেল তৈরি করতে পারেন এবং এই মডেলগুলির মাধ্যমে ডাটা ভ্যালিডেট এবং সঠিক টাইপে পার্স করা যায়। এটি Python 3.6+ সংস্করণের সাথে কাজ করে এবং Python-এর dataclass-এর মতো সাধারণ ডাটা ক্লাসের থেকে অনেক বেশি শক্তিশালী।
Pydantic এবং FastAPI
FastAPI Pydantic ব্যবহার করে ইনপুট ডাটা যাচাই ও টাইপ নিশ্চিত করে। FastAPI-তে Request Body, Path Parameters, Query Parameters এবং অন্যান্য ইনপুট ডাটার জন্য Pydantic মডেল ব্যবহার করা হয়। এই মডেলগুলো BaseModel ক্লাস থেকে ইনহেরিট করে তৈরি করা হয়।
Pydantic এবং FastAPI-এর সম্পর্ক:
- ডাটা ভ্যালিডেশন: FastAPI-এর মাধ্যমে API রিকোয়েস্টের ইনপুট ডাটার ভ্যালিডেশন স্বয়ংক্রিয়ভাবে সম্পাদিত হয়।
- টাইপ সেফটি: Pydantic মডেলগুলি টাইপ সেফটি নিশ্চিত করে, অর্থাৎ, ইনপুট ডাটা সঠিক টাইপে রয়েছে কিনা তা যাচাই করা হয়।
- স্পিড এবং পারফরম্যান্স: FastAPI এবং Pydantic একসাথে ব্যবহার করা হলে অ্যাপ্লিকেশনটি দ্রুত এবং পারফরম্যান্ট হয়।
Pydantic কেন প্রয়োজন?
Pydantic-এর ব্যবহার FastAPI-এর জন্য বিভিন্ন কারণে গুরুত্বপূর্ণ। নিচে Pydantic এর প্রয়োজনীয়তার কয়েকটি কারণ আলোচনা করা হলো:
১. ডাটা ভ্যালিডেশন সহজ করা
Pydantic ব্যবহার করে ইনপুট ডাটা ভ্যালিডেট করা সহজ হয়ে যায়। এটি বিভিন্ন ধরনের ডাটা (যেমন: স্ট্রিং, ইন্টিজার, ফ্লোট, বুলিয়ান) যাচাই করে এবং যেকোনো ভুল টাইপের ইনপুটকে ধরা সম্ভব করে।
উদাহরণ:
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
এখানে, name অবশ্যই একটি স্ট্রিং এবং price অবশ্যই একটি ফ্লোট হতে হবে। যদি ইউজার ভুল ইনপুট দেয়, যেমন:
{
"name": "Laptop",
"price": "invalid_price"
}
তাহলে FastAPI স্বয়ংক্রিয়ভাবে ত্রুটি দেখাবে।
২. টাইপ সেফটি
Pydantic টাইপ সেফটি নিশ্চিত করে, অর্থাৎ ইউজার যখন কোনও ইনপুট পাঠাবে, তখন সেই ইনপুট সঠিক টাইপে থাকতে হবে। এটি ডেভেলপারদের জন্য কোডের নিরাপত্তা এবং কোড সঠিকতার প্রমাণ।
class Item(BaseModel):
name: str
price: float
এখানে, FastAPI নিশ্চিত করবে যে price একটি ফ্লোট টাইপ এবং name একটি স্ট্রিং টাইপ হতে হবে। যদি ভুল টাইপের ডাটা পাঠানো হয়, তাহলে FastAPI 400 বাড রেসপন্স ফেরত দেবে।
৩. ডাটা পার্সিং এবং কনভার্সন
Pydantic ইনপুট ডাটাকে স্বয়ংক্রিয়ভাবে কনভার্ট করে সঠিক টাইপে রূপান্তরিত করে। যেমন, যদি আপনি JSON এ স্ট্রিং আকারে একটি ফ্লোট মান পাঠান, তবে Pydantic সেটিকে ফ্লোট টাইপে কনভার্ট করে নেয়।
class Item(BaseModel):
price: float
@app.post("/items/")
def create_item(item: Item):
return {"price": item.price}
৪. ডিফল্ট মান এবং ঐচ্ছিক ফিল্ড
Pydantic মডেলগুলিতে আপনি ডিফল্ট মান এবং ঐচ্ছিক ফিল্ড নির্ধারণ করতে পারেন, যা ডেটা ইনপুট সহজ করে তোলে।
from typing import Optional
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: Optional[str] = None # Optional field
price: float
এখানে, description ফিল্ডটি ঐচ্ছিক এবং ডিফল্ট মান None থাকবে। price বাধ্যতামূলক (required) ফিল্ড।
৫. ডাটা ট্রান্সফরমেশন
Pydantic ব্যবহার করে ইনপুট ডাটা সহজেই ট্রান্সফর্ম (যেমন: স্ট্রিং ক্যাপিটালাইজ করা, ফর্ম্যাট পরিবর্তন করা) করা যায়।
from pydantic import BaseModel, Field
class Item(BaseModel):
name: str = Field(..., min_length=3, max_length=100)
price: float
class Config:
anystr_strip_whitespace = True
এখানে, name ফিল্ডের স্ট্রিংয়ে অতিরিক্ত স্পেস থাকলে তা স্বয়ংক্রিয়ভাবে অপসারণ করা হবে।
৬. স্বয়ংক্রিয় ডকুমেন্টেশন
Pydantic মডেলগুলো FastAPI-এর Swagger UI এবং ReDoc-এ স্বয়ংক্রিয়ভাবে ডকুমেন্টেশন তৈরি করে। যেকোনো API এন্ডপয়েন্টে মডেল যুক্ত করলে, তা ইন্টারেক্টিভভাবে ডকুমেন্টেশন হিসেবে প্রদর্শিত হবে।
@app.post("/items/", response_model=Item)
def create_item(item: Item):
return item
এখানে, FastAPI এই মডেলটি Swagger UI বা ReDoc-এ স্বয়ংক্রিয়ভাবে প্রদর্শন করবে।
Pydantic FastAPI-র সাথে একত্রে ব্যবহার করে ডাটা ভ্যালিডেশন, টাইপ সেফটি, ডাটা ট্রান্সফরমেশন এবং স্বয়ংক্রিয় ডকুমেন্টেশন নিশ্চিত করার ক্ষেত্রে গুরুত্বপূর্ণ ভূমিকা পালন করে। এটি FastAPI কে অত্যন্ত শক্তিশালী এবং সহজ ব্যবহারযোগ্য করে তোলে, কারণ Pydantic স্বয়ংক্রিয়ভাবে ডাটার ভ্যালিডেশন এবং পার্সিং সম্পাদন করে, ফলে ডেভেলপারদের জন্য কোড লেখা এবং ত্রুটি শনাক্ত করা সহজ হয়।
Read more