স্প্রিং বুট (Spring Boot) ওয়েব ডেভেলপমেন্টে সাধারণত Path Variables এবং Request Parameters ব্যবহৃত হয়। এগুলো HTTP রিকোয়েস্টের সাথে ইনপুট প্যারামিটার হিসেবে কাজ করে এবং সার্ভার সাইডে বিভিন্ন ডেটা প্রক্রিয়াকরণে সহায়তা করে।
Path Variables
Path Variables হল URL পাথের অংশ হিসেবে ডেটা পাঠানো। সাধারণত, RESTful API ডিজাইনে এটি ব্যবহৃত হয়, যেখানে URL পাথের মধ্যে ডায়নামিক ডেটা পাঠানো হয় এবং সেই ডেটা সার্ভার সাইডে প্রক্রিয়া করা হয়।
Path Variables এর উদাহরণ:
ধরা যাক, আপনি একটি API তৈরি করতে চান যা একটি নির্দিষ্ট আইডি ব্যবহারকারীকে খুঁজে বের করবে। এর জন্য আপনি একটি URL পাথের মধ্যে ব্যবহারকারীর আইডি পাঠাবেন।
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public String getUserById(@PathVariable("id") Long userId) {
return "User ID: " + userId;
}
}
এখানে, @PathVariable অ্যানোটেশন ব্যবহার করা হয়েছে যা id নামক পাথ ভেরিয়েবলকে গ্রহণ করে। যদি রিকোয়েস্ট URL হয় /users/123, তাহলে userId হবে 123।
Path Variable এর URL উদাহরণ:
- URL:
/users/123 - রেসপন্স:
"User ID: 123"
একাধিক Path Variables:
আপনি একাধিক পাথ ভেরিয়েবলও ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি একটি ব্যবহারকারী এবং তার অর্ডার আইডি পেতে চাইলে এমনভাবে লিখতে পারেন:
@GetMapping("/{userId}/orders/{orderId}")
public String getOrderDetails(@PathVariable("userId") Long userId, @PathVariable("orderId") Long orderId) {
return "User ID: " + userId + ", Order ID: " + orderId;
}
এখানে, দুইটি পাথ ভেরিয়েবল userId এবং orderId একত্রে ব্যবহার করা হয়েছে।
Request Parameters
Request Parameters হল URL এর কোয়েরি স্ট্রিং এর অংশ হিসেবে ডেটা পাঠানো হয়। এগুলো সাধারণত ফর্ম ডেটা, সার্চ বা ফিল্টার কন্ডিশন এর জন্য ব্যবহৃত হয়। @RequestParam অ্যানোটেশন ব্যবহার করে এই প্যারামিটারগুলো গ্রহণ করা হয়।
Request Parameters এর উদাহরণ:
ধরা যাক, আপনি একটি API তৈরি করতে চান যেখানে ব্যবহারকারী একটি সার্চ টার্ম পাঠাবে এবং সার্ভার সেই অনুযায়ী ডেটা রিটার্ন করবে।
@RestController
@RequestMapping("/products")
public class ProductController {
@GetMapping("/search")
public String searchProducts(@RequestParam("name") String productName, @RequestParam("category") String category) {
return "Searching for products with name: " + productName + " and category: " + category;
}
}
এখানে, @RequestParam অ্যানোটেশন ব্যবহার করা হয়েছে যা কোয়েরি স্ট্রিং থেকে প্যারামিটারগুলো গ্রহণ করে। যেমন, /products/search?name=shoes&category=sport URL এর মাধ্যমে productName এবং category প্যারামিটার পাওয়া যাবে।
Request Parameter এর URL উদাহরণ:
- URL:
/products/search?name=shoes&category=sport - রেসপন্স:
"Searching for products with name: shoes and category: sport"
Optional Request Parameters:
যদি কোনো প্যারামিটার ঐচ্ছিক (Optional) হতে চান, তবে আপনি defaultValue প্রপার্টি ব্যবহার করতে পারেন।
@GetMapping("/search")
public String searchProducts(@RequestParam(name = "name", defaultValue = "default") String productName) {
return "Searching for products with name: " + productName;
}
এখানে, যদি name প্যারামিটার না দেওয়া হয়, তবে ডিফল্ট মান হিসেবে "default" ব্যবহার হবে।
Multiple Request Parameters:
একাধিক প্যারামিটারও একইভাবে গ্রহণ করা যেতে পারে। উদাহরণস্বরূপ, একটি সার্চ ফিচারে একাধিক ফিল্টার যুক্ত করা:
@GetMapping("/filter")
public String filterProducts(@RequestParam String name, @RequestParam int price) {
return "Filtering products with name: " + name + " and price: " + price;
}
এখানে, name এবং price প্যারামিটার একসাথে ব্যবহার করা হয়েছে।
Path Variables vs Request Parameters
| বৈশিষ্ট্য | Path Variables | Request Parameters |
|---|---|---|
| ব্যবহার | সাধারণত আইডি বা রিসোর্সের নামের মতো ডেটা পাঠানোর জন্য | ফিল্টার, সার্চ বা ঐচ্ছিক ডেটা পাঠানোর জন্য |
| উদাহরণ | /users/123 | /search?name=shoes&category=sport |
| ডেটার ধরন | URL পাথের মধ্যে ডেটা | কোয়েরি স্ট্রিংয়ের মধ্যে ডেটা |
| ঐচ্ছিকতা | সাধারণত অপরিহার্য (Required) | ঐচ্ছিক হতে পারে |
| প্রসেসিং | রিসোর্সের নাম বা আইডি অনুযায়ী ডেটা প্রক্রিয়া করা হয় | ফিল্টারিং বা অন্যান্য অপশন অনুযায়ী ডেটা প্রক্রিয়া |
উপসংহার
স্প্রিং বুটের Path Variables এবং Request Parameters দুটি খুবই গুরুত্বপূর্ণ টেকনিক্যাল কনসেপ্ট। Path Variables সাধারণত RESTful API ডিজাইন বা রিসোর্স আইডেন্টিফিকেশন এর জন্য ব্যবহৃত হয়, যেখানে Request Parameters ফিল্টার, সার্চ বা ঐচ্ছিক ডেটা প্রেরণের জন্য ব্যবহৃত হয়। উভয় ক্ষেত্রেই স্প্রিং বুট খুব সহজভাবে এই ডেটাগুলি গ্রহণ এবং প্রক্রিয়া করার সুবিধা প্রদান করে।
Read more