FastAPI-তে Query Parameters ব্যবহার করে URL-এর মাধ্যমে ডাটা পাঠানো হয়। এগুলি সাধারণত ঐচ্ছিক (Optional) এবং আবশ্যক (Required) হতে পারে। FastAPI এর মাধ্যমে Optional এবং Required Query Parameters ব্যবস্থাপনা করা সহজ।
এখানে আমরা দেখব কিভাবে Optional এবং Required Query Parameters তৈরি এবং কনফিগার করা যায় FastAPI-তে।
Query Parameters কী?
Query Parameters হল URL-এর অংশ যা ? দিয়ে শুরু হয়ে & দিয়ে আলাদা করা হয়। উদাহরণস্বরূপ:
/items/?q=example&limit=10
এখানে, q এবং limit হল Query Parameters।
Optional Query Parameters
Optional Query Parameters এমন প্যারামিটার যা যদি ব্যবহারকারী পাঠায় না, তবে তার জন্য ডিফল্ট মান ব্যবহার করা হবে। FastAPI তে আপনি ডিফল্ট মান দিয়ে Query Parameter তৈরি করতে পারেন, যা ঐচ্ছিক হিসেবে কাজ করবে।
উদাহরণ: Optional 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দেওয়া হয়েছে।
রিকোয়েস্ট উদাহরণ (যদি q এবং limit না পাঠানো হয়):
GET /items/
রেসপন্স:
{
"query": null,
"limit": 10
}
এখানে, যেহেতু q পাঠানো হয়নি, তাই এটি null হিসাবে রিটার্ন হয়েছে এবং limit এর ডিফল্ট মান 10 হয়েছে।
রিকোয়েস্ট উদাহরণ (যদি q এবং limit পাঠানো হয়):
GET /items/?q=fastapi&limit=5
রেসপন্স:
{
"query": "fastapi",
"limit": 5
}
Required Query Parameters
Required Query Parameters হল সেই প্যারামিটার যেগুলি অবশ্যই ব্যবহারকারীর পক্ষ থেকে পাঠানো উচিত। যদি এই প্যারামিটারটি পাঠানো না হয়, FastAPI ত্রুটি প্রদান করবে।
উদাহরণ: Required Query Parameters
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/")
def read_items(q: str, limit: int = 10):
return {"query": q, "limit": limit}
এখানে:
qএকটি আবশ্যক (Required) Query Parameter, যার মানstrটাইপ হবে। এটি ঐচ্ছিক নয়, তাই এটি অবশ্যই পাঠাতে হবে।limitহল একটি ঐচ্ছিক Query Parameter, যার জন্য ডিফল্ট মান10দেওয়া হয়েছে।
রিকোয়েস্ট উদাহরণ (যদি q পাঠানো না হয়):
GET /items/
রেসপন্স (ত্রুটি):
{
"detail": [
{
"loc": ["query", "q"],
"msg": "field required",
"type": "value_error.missing"
}
]
}
এখানে, q প্যারামিটারটি পাঠানো না হলে FastAPI একটি ত্রুটি দেখাবে যে এই প্যারামিটারটি অবশ্যই প্রয়োজন।
রিকোয়েস্ট উদাহরণ (যদি q পাঠানো হয়):
GET /items/?q=fastapi&limit=5
রেসপন্স:
{
"query": "fastapi",
"limit": 5
}
এখানে, q প্যারামিটারটি পাঠানো হয়েছে এবং limit প্যারামিটারটি ডিফল্ট মান 10 হিসেবে ব্যবহার করা হয়েছে।
Query Parameters এর Validation
FastAPI তে আপনি Query Parameters এর জন্য validation কন্ডিশনও নির্ধারণ করতে পারেন, যেমন: min, max, gt, lt, regex ইত্যাদি। এটি আপনাকে ইনপুটের উপর সিমান্ত বা সীমাবদ্ধতা আরোপ করতে সহায়ক।
উদাহরণ: Query Parameters এর Validation
from fastapi import FastAPI
from pydantic import conint
app = FastAPI()
@app.get("/items/")
def read_items(q: str, limit: conint(ge=1, le=100) = 10):
return {"query": q, "limit": limit}
এখানে:
limitQuery Parameter এর জন্যconint(ge=1, le=100)কন্ডিশন দেওয়া হয়েছে, যা মানে হল যেlimitঅবশ্যই ১ থেকে ১০০ এর মধ্যে হতে হবে।
রিকোয়েস্ট উদাহরণ (যদি limit পাঠানো হয়):
GET /items/?q=fastapi&limit=50
রেসপন্স:
{
"query": "fastapi",
"limit": 50
}
রিকোয়েস্ট উদাহরণ (যদি limit এর বাইরে কোনো মান পাঠানো হয়):
GET /items/?q=fastapi&limit=150
রেসপন্স (ত্রুটি):
{
"detail": [
{
"loc": ["query", "limit"],
"msg": "ensure this value is less than or equal to 100",
"type": "value_error.number.not_le"
}
]
}
এখানে, limit প্যারামিটারটি ১০০ এর বেশি পাঠানো হয়েছে, ফলে FastAPI ত্রুটি দেখাবে।
Query Parameters এর সাথে Regular Expression (Regex) ব্যবহার
আপনি Query Parameters-এ regex ব্যবহার করে একটি নির্দিষ্ট প্যাটার্ন যাচাই করতে পারেন। উদাহরণস্বরূপ, কোনো প্যারামিটারকে নির্দিষ্ট আঙ্গিকে থাকতে হবে (যেমন, একটি ইমেইল ঠিকানা বা ফোন নম্বর)।
উদাহরণ: Regex Validation
from fastapi import FastAPI
from pydantic import constr
app = FastAPI()
@app.get("/items/")
def read_items(email: constr(regex=r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$")):
return {"email": email}
এখানে, email Query Parameter এর জন্য একটি regex যোগ করা হয়েছে, যা একটি বৈধ ইমেইল ঠিকানা যাচাই করবে।
রিকোয়েস্ট উদাহরণ (সঠিক ইমেইল):
GET /items/?email=test@example.com
রেসপন্স:
{
"email": "test@example.com"
}
রিকোয়েস্ট উদাহরণ (ভুল ইমেইল):
GET /items/?email=test@.com
রেসপন্স (ত্রুটি):
{
"detail": [
{
"loc": ["query", "email"],
"msg": "string does not match regex \"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$\"",
"type": "value_error.str.regex"
}
]
}
FastAPI তে Optional এবং Required Query Parameters ব্যবস্থাপনা অত্যন্ত সহজ। আপনি Optional Query Parameters-এ ডিফল্ট মান প্রদান করতে পারেন, এবং Required Query Parameters-এ অবশ্যই মান পাঠাতে হবে। এর সাথে আপনি Validation এবং Regex ব্যবহার করে Query Parameters এর ওপর আরও কাস্টম কনস্ট্রেইন্ট প্রয়োগ করতে পারেন। FastAPI এই সমস্ত ভ্যালিডেশন এবং কাস্টমাইজেশন সহজভাবে পরিচালনা করে।
Read more