FastAPI তে Query Parameters হল URL এর শেষে যুক্ত হওয়া প্যারামিটার যা ? দিয়ে শুরু হয় এবং একাধিক প্যারামিটার & দ্বারা আলাদা হয়। Query Parameters সাধারণত ঐচ্ছিক (optional) হয় এবং URL এর মাধ্যমে ক্লায়েন্ট থেকে ইনপুট ডাটা গ্রহণ করতে ব্যবহৃত হয়। FastAPI এর সাহায্যে Query Parameters সহজেই গ্রহণ করা যায় এবং টাইপ ভ্যালিডেশনও করা হয়।
Query Parameters ব্যবস্থাপনা
Query Parameters এর মান URL এর পরে ? দিয়ে পাঠানো হয়। FastAPI এ Query Parameters ব্যবস্থাপনা খুবই সহজ এবং টাইপ সেফটি, ডিফল্ট মান, এবং ঐচ্ছিক প্যারামিটারসহ সাপোর্ট করা হয়।
উদাহরণ: Basic Query Parameters
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/")
def read_items(q: str = None, limit: int = 10):
return {"query": q, "limit": limit}
এখানে:
q: একটি Query Parameter, যা ঐচ্ছিক এবং ডিফল্ট মানNone।limit: একটি Query Parameter, যার ডিফল্ট মান10।
রিকোয়েস্ট উদাহরণ:
GET /items/?q=fastapi&limit=5
রেসপন্স:
{
"query": "fastapi",
"limit": 5
}
যদি আপনি q অথবা limit প্যারামিটার না পাঠান, তাহলে FastAPI ডিফল্ট মান ব্যবহার করবে।
রিকোয়েস্ট উদাহরণ (Query Parameter ছাড়া):
GET /items/
রেসপন্স:
{
"query": null,
"limit": 10
}
Query Parameters এর Validation এবং Constraints
FastAPI তে Query Parameters এর জন্য validation এবং constraints ব্যবহার করা যায়, যেমন gt, lt, ge, le, min_length, max_length, ইত্যাদি। এটি ইনপুট ডাটার সঠিকতা নিশ্চিত করতে সহায়ক।
উদাহরণ: Query Parameter Validation
from fastapi import FastAPI
from pydantic import conint
app = FastAPI()
@app.get("/items/")
def read_items(skip: int = 0, limit: conint(ge=1, le=100) = 10):
return {"skip": skip, "limit": limit}
এখানে, limit Query Parameter এর জন্য ge=1 এবং le=100 কন্ডিশন ব্যবহার করা হয়েছে, যার মান ১ থেকে ১০০ এর মধ্যে হতে হবে। conint পিড্যানটিক ফাংশনটি টাইপ ভ্যালিডেশন করতে সহায়ক।
রিকোয়েস্ট উদাহরণ (সীমা ১ থেকে ১০০):
GET /items/?limit=50
রেসপন্স:
{
"skip": 0,
"limit": 50
}
রিকোয়েস্ট উদাহরণ (ভুল সীমা):
GET /items/?limit=150
রেসপন্স (ত্রুটি):
{
"detail": [
{
"loc": ["query", "limit"],
"msg": "ensure this value is less than or equal to 100",
"type": "value_error.number.not_le"
}
]
}
এখানে, 150 এর মান limit এর জন্য অনুমোদিত নয়, কারণ এটি ১০০ এর বেশি।
Required Query Parameters
FastAPI তে Query Parameters সাধারণত ঐচ্ছিক হয়। তবে, আপনি চাইলে কিছু প্যারামিটারকে required করতে পারেন।
উদাহরণ: Required Query Parameter
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/")
def read_item(q: str):
return {"query": q}
এখানে, q একটি required Query Parameter। এর মান অবশ্যই রিকোয়েস্টে থাকতে হবে।
রিকোয়েস্ট উদাহরণ:
GET /items/?q=example
রেসপন্স:
{
"query": "example"
}
রিকোয়েস্ট উদাহরণ (Query Parameter না পাঠালে):
GET /items/
রেসপন্স (ত্রুটি):
{
"detail": [
{
"loc": ["query", "q"],
"msg": "field required",
"type": "value_error.missing"
}
]
}
এখানে, q প্যারামিটার অবশ্যই পাঠাতে হবে, নাহলে FastAPI ত্রুটি দেখাবে।
Query Parameters এর Default Values
Query Parameters এর জন্য আপনি ডিফল্ট মানও নির্ধারণ করতে পারেন। এটি তখন ব্যবহৃত হয় যখন ক্লায়েন্ট প্যারামিটার না পাঠায়।
উদাহরণ: Default Values সহ Query Parameters
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/")
def read_item(q: str = "default_query", limit: int = 10):
return {"query": q, "limit": limit}
এখানে, q এর ডিফল্ট মান "default_query" এবং limit এর ডিফল্ট মান 10।
রিকোয়েস্ট উদাহরণ (Query Parameter না পাঠালে):
GET /items/
রেসপন্স:
{
"query": "default_query",
"limit": 10
}
রিকোয়েস্ট উদাহরণ (Query Parameter সহ):
GET /items/?q=test&limit=5
রেসপন্স:
{
"query": "test",
"limit": 5
}
Multiple Query Parameters Handling
FastAPI তে আপনি একাধিক Query Parameters একসাথে গ্রহণ করতে পারেন।
উদাহরণ: Multiple Query Parameters
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/")
def read_item(q: str = None, limit: int = 10, offset: int = 0):
return {"query": q, "limit": limit, "offset": offset}
এখানে, তিনটি Query Parameters q, limit, এবং offset একসাথে নেওয়া হচ্ছে।
রিকোয়েস্ট উদাহরণ:
GET /items/?q=fastapi&limit=5&offset=10
রেসপন্স:
{
"query": "fastapi",
"limit": 5,
"offset": 10
}
Query Parameters with Lists
FastAPI তে Query Parameters-এ list বা array ডাটা টাইপও গ্রহণ করা যায়।
উদাহরণ: List Query Parameters
from fastapi import FastAPI
from typing import List
app = FastAPI()
@app.get("/items/")
def read_items(q: List[str] = []):
return {"query": q}
এখানে, q একটি List of Strings হিসেবে Query Parameters গ্রহণ করছে।
রিকোয়েস্ট উদাহরণ:
GET /items/?q=fastapi&q=python
রেসপন্স:
{
"query": ["fastapi", "python"]
}
FastAPI তে Query Parameters ব্যবস্থাপনা অত্যন্ত সহজ এবং কার্যকর। Query Parameters এর মাধ্যমে আপনি URL-এ অতিরিক্ত ডাটা পাঠাতে পারেন, যা ঐচ্ছিক বা বাধ্যতামূলক হতে পারে। FastAPI স্বয়ংক্রিয়ভাবে টাইপ যাচাই, ভ্যালিডেশন এবং ডিফল্ট মান প্রয়োগ করে, যা API ডেভেলপমেন্টকে আরও কার্যক্ষম এবং নিরাপদ করে তোলে।
Read more