Optional এবং Required Query Parameters

Web Development - ফাস্টএপিআই (FastAPI) - FastAPI এর সাথে Query Parameters এবং Path Parameters
211

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}

এখানে:

  • limit Query 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 এই সমস্ত ভ্যালিডেশন এবং কাস্টমাইজেশন সহজভাবে পরিচালনা করে।

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

Are you sure to start over?

Loading...