Spring MVC এ বিভিন্ন ধরণের HTTP রিকোয়েস্ট প্যারামিটার গ্রহণ করার জন্য @RequestParam, @PathVariable, এবং @RequestBody অ্যানোটেশনগুলি ব্যবহার করা হয়। এগুলি HTTP রিকোয়েস্ট থেকে ডেটা এক্সট্র্যাক্ট করতে এবং কন্ট্রোলার মেথডে পাস করতে ব্যবহৃত হয়।
নিচে প্রতিটি অ্যানোটেশনের ব্যবহার এবং উদাহরণ দেওয়া হলো:
1. @RequestParam
@RequestParam অ্যানোটেশনটি URL-এর কুয়েরি প্যারামিটার (query parameters) বা ফর্ম ডেটা থেকে প্যারামিটার ভ্যালু গ্রহণ করার জন্য ব্যবহৃত হয়।
ব্যবহার:
- সাধারণত GET রিকোয়েস্টে URL এর কুয়েরি স্ট্রিং থেকে প্যারামিটার পাঠানো হয়।
- POST বা PUT রিকোয়েস্টে ফর্ম ডেটা (form data) থেকে প্যারামিটার নেয়।
উদাহরণ:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@GetMapping("/user")
public String getUser(@RequestParam String name, @RequestParam int age) {
return "Name: " + name + ", Age: " + age;
}
}
URL:
http://localhost:8080/user?name=John&age=25
আউটপুট:
Name: John, Age: 25
ব্যাখ্যা:
- এখানে
@RequestParamব্যবহার করা হয়েছে name এবং age প্যারামিটার থেকে মান গ্রহণ করতে। এগুলো URL থেকে নেওয়া হয় যেমন?name=John&age=25।
2. @PathVariable
@PathVariable অ্যানোটেশনটি URL পাথে থাকা ডাইনামিক ভ্যালু বা ভ্যারিয়েবলকে কন্ট্রোলার মেথডের প্যারামিটার হিসেবে গ্রহণ করতে ব্যবহৃত হয়।
ব্যবহার:
- RESTful API তে পাথ ভ্যারিয়েবল বা পাথ প্যারামিটার ব্যবহার করা হয়, যেখানে URL পাথে ডেটা সন্নিবেশিত থাকে।
উদাহরণ:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@GetMapping("/user/{username}")
public String getUser(@PathVariable String username) {
return "User: " + username;
}
}
URL:
http://localhost:8080/user/john_doe
আউটপুট:
User: john_doe
ব্যাখ্যা:
- এখানে
@PathVariableব্যবহার করা হয়েছেusernameপ্যারামিটারকে পাথ থেকে গ্রহণ করার জন্য, যেটি URL-এর/user/{username}পাথে থাকা ভ্যালু থেকে পাওয়া যায়।
3. @RequestBody
@RequestBody অ্যানোটেশনটি HTTP রিকোয়েস্ট বডি থেকে JSON, XML বা অন্যান্য ডেটা ফর্ম্যাটে আসা ডেটা গ্রহণ করতে ব্যবহৃত হয়। এটি সাধারণত POST, PUT বা PATCH রিকোয়েস্টে ব্যবহার করা হয়, যেখানে ক্লায়েন্ট ডেটা সার্ভারে পাঠায়।
ব্যবহার:
- ক্লায়েন্ট থেকে JSON ডেটা পাঠানোর জন্য,
@RequestBodyঅ্যানোটেশনটি মডেল অবজেক্টে ম্যাপ করা হয়।
উদাহরণ:
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@PostMapping("/user")
public String createUser(@RequestBody User user) {
return "User created with username: " + user.getUsername() + " and age: " + user.getAge();
}
}
JSON রিকোয়েস্ট বডি:
{
"username": "john_doe",
"age": 25
}
আউটপুট:
User created with username: john_doe and age: 25
ব্যাখ্যা:
- এখানে
@RequestBodyব্যবহার করা হয়েছে JSON ডেটা গ্রহণ করার জন্য, যা সরাসরি User অবজেক্টে ম্যাপ করা হয়। ক্লায়েন্ট থেকে পাঠানো JSON ডেটা স্বয়ংক্রিয়ভাবেUserক্লাসে কনভার্ট হয়ে কন্ট্রোলারের মেথডে পাস হয়।
সংক্ষেপে তিনটি অ্যানোটেশনের তুলনা
| অ্যানোটেশন | ব্যবহৃত হয় | উদাহরণ |
|---|---|---|
@RequestParam | কুয়েরি প্যারামিটার বা ফর্ম ডেটা থেকে ডেটা নেওয়া | /user?name=John&age=25 |
@PathVariable | URL পাথ থেকে ডেটা নেওয়া | /user/{username} |
@RequestBody | রিকোয়েস্ট বডি থেকে JSON/XML ডেটা গ্রহণ | { "username": "john_doe", "age": 25 } |
উপসংহার
@RequestParamসাধারণত কুয়েরি প্যারামিটার বা ফর্ম ডেটা এক্সট্র্যাক্ট করতে ব্যবহৃত হয়।@PathVariableURL পাথ থেকে ডাইনামিক ডেটা এক্সট্র্যাক্ট করতে ব্যবহৃত হয়, যা RESTful APIs এর জন্য উপযুক্ত।@RequestBodyJSON বা XML ডেটা রিকোয়েস্ট বডি থেকে গ্রহণ করতে ব্যবহৃত হয়, এবং এটি POST বা PUT রিকোয়েস্টে ব্যবহৃত হয়।
Spring MVC এর মাধ্যমে @RequestParam, @PathVariable, এবং @RequestBody ব্যবহারের মাধ্যমে ডেটা এক্সট্র্যাক্ট করা খুবই সহজ এবং এটি আপনাকে API এবং ওয়েব অ্যাপ্লিকেশনগুলোর জন্য অত্যন্ত নমনীয় এবং শক্তিশালী কন্ট্রোলার মেথড তৈরি করতে সহায়ক।
Read more