Spring MVC মূলত একটি ওয়েব ফ্রেমওয়ার্ক যা Model-View-Controller ডিজাইন প্যাটার্ন অনুসরণ করে। এটি প্রথাগত ওয়েব অ্যাপ্লিকেশন তৈরিতে ব্যবহৃত হয়, তবে Spring MVC ব্যবহার করে RESTful Web Services-ও তৈরি করা সম্ভব। RESTful Web Services হল একটি আর্কিটেকচার স্টাইল, যা HTTP প্রটোকল ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা বিনিময় করে।
Spring MVC তে RESTful Web Services তৈরি করা খুবই সহজ এবং এটি HTTP এর GET, POST, PUT, DELETE প্রমুখ মেথডগুলির মাধ্যমে রিসোর্স পরিচালনা করে। Spring MVC RESTful API তৈরি করার জন্য আমরা @RestController এবং @RequestMapping অ্যানোটেশন ব্যবহার করি।
Spring MVC এর সাথে RESTful Web Services তৈরি করার জন্য প্রয়োজনীয় পদক্ষেপ:
Step 1: Spring Boot এর জন্য ডিপেনডেন্সি যোগ করা
Spring Boot ব্যবহার করলে Spring MVC এবং RESTful Web Services এর কনফিগারেশন অত্যন্ত সহজ হয়ে যায়। প্রথমে আপনাকে spring-boot-starter-web ডিপেনডেন্সি যোগ করতে হবে।
Maven Dependency:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Step 2: REST Controller তৈরি করা
Spring MVC-তে RESTful Web Services তৈরি করতে @RestController অ্যানোটেশন ব্যবহার করা হয়। এটি Spring MVC-কে জানায় যে, এই ক্লাসটি শুধুমাত্র JSON বা XML আকারে ডেটা রিটার্ন করবে, কোনো ভিউ তৈরি করবে না।
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/greeting")
public String greeting() {
return "Hello, Spring MVC with RESTful Web Services!";
}
}
Explanation:
@RestController: এই অ্যানোটেশন Spring MVC-কে জানায় যে, এই ক্লাসে থাকা মেথডগুলো HTTP রিকোয়েস্টের সঠিক রেসপন্স প্রদান করবে।@GetMapping("/greeting"): এটি HTTP GET রিকোয়েস্টের জন্য/greetingURL পাথকে ম্যাপ করে।
Step 3: POST, PUT, DELETE API তৈরি করা
Spring MVC তে POST, PUT, DELETE মেথড হ্যান্ডল করার জন্য @PostMapping, @PutMapping, এবং @DeleteMapping অ্যানোটেশন ব্যবহৃত হয়।
POST API উদাহরণ:
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 " + user.getName() + " created successfully!";
}
}
Explanation:
@PostMapping("/user"): HTTP POST রিকোয়েস্ট হ্যান্ডল করার জন্য এই অ্যানোটেশন ব্যবহার করা হয়েছে।@RequestBody User user: এখানে@RequestBodyব্যবহার করে JSON ফরম্যাটে পাঠানো ডেটাUserঅবজেক্টে ম্যাপ করা হচ্ছে।
User Class:
public class User {
private String name;
private int age;
// Getters and Setters
}
Example JSON Request:
{
"name": "John Doe",
"age": 30
}
Step 4: PUT API উদাহরণ
PUT API সাধারণত একটি রিসোর্স আপডেট করতে ব্যবহৃত হয়।
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@PutMapping("/user/{id}")
public String updateUser(@PathVariable int id, @RequestBody User user) {
// ডেটাবেসে user আপডেট করা হবে
return "User with ID " + id + " updated to " + user.getName();
}
}
Explanation:
@PutMapping("/user/{id}"): HTTP PUT রিকোয়েস্টের জন্য/user/{id}পাথের জন্য এটি ব্যবহার করা হয়েছে।{id}হল URL প্যারামিটার যা@PathVariableদ্বারা মডেল অবজেক্টে ম্যাপ করা হয়।@RequestBody User user: এখানে@RequestBodyব্যবহার করা হয়েছে যাতে PUT রিকোয়েস্টের মাধ্যমে JSON ডেটা সরাসরিUserঅবজেক্টে ম্যাপ করা যায়।
Step 5: DELETE API উদাহরণ
DELETE API রিসোর্স মুছে ফেলার জন্য ব্যবহৃত হয়।
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@DeleteMapping("/user/{id}")
public String deleteUser(@PathVariable int id) {
// ডেটাবেস থেকে ব্যবহারকারী মুছে ফেলা হবে
return "User with ID " + id + " deleted successfully!";
}
}
Explanation:
@DeleteMapping("/user/{id}"): HTTP DELETE রিকোয়েস্ট হ্যান্ডল করার জন্য এটি ব্যবহৃত হয়।{id}URL প্যারামিটার হিসেবে@PathVariableদ্বারা এক্সট্র্যাক্ট করা হয়।
Step 6: Spring Boot Application Class
Spring Boot ব্যবহার করে আপনার অ্যাপ্লিকেশনটি রান করার জন্য Main Application Class তৈরি করা হয়।
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class RestApiApplication {
public static void main(String[] args) {
SpringApplication.run(RestApiApplication.class, args);
}
}
Explanation:
@SpringBootApplication: এটি Spring Boot অ্যাপ্লিকেশন কনফিগারেশন অ্যানোটেশন যা Spring Boot অ্যাপ্লিকেশন রান করাতে ব্যবহৃত হয়।SpringApplication.run(...): Spring Boot অ্যাপ্লিকেশন চালু করার জন্য এটি ব্যবহৃত হয়।
Step 7: Application Properties (Optional)
Spring Boot অ্যাপ্লিকেশনের কনফিগারেশন করতে application.properties বা application.yml ফাইল ব্যবহার করা যায়।
Example:
server.port=8081 # Port set to 8081
Step 8: Testing RESTful Web Services
এখন আপনি Postman বা অন্য যেকোনো HTTP Client ব্যবহার করে এই RESTful API গুলো টেস্ট করতে পারবেন।
- GET Request:
- URL:
http://localhost:8080/greeting - Method:
GET - Response:
Hello, Spring MVC with RESTful Web Services!
- URL:
POST Request:
- URL:
http://localhost:8080/user - Method:
POST - Request Body (JSON):
{ "name": "Jane Doe", "age": 25 }- Response:
User Jane Doe created successfully!
- URL:
PUT Request:
- URL:
http://localhost:8080/user/1 - Method:
PUT - Request Body (JSON):
{ "name": "John Smith", "age": 30 }- Response:
User with ID 1 updated to John Smith
- URL:
- DELETE Request:
- URL:
http://localhost:8080/user/1 - Method:
DELETE - Response:
User with ID 1 deleted successfully!
- URL:
উপসংহার:
Spring MVC ব্যবহার করে RESTful Web Services তৈরি করা অত্যন্ত সহজ। @RestController, @GetMapping, @PostMapping, @PutMapping, এবং @DeleteMapping এর মাধ্যমে HTTP মেথড এবং URL পাথের সাথে মেলানো রিকোয়েস্ট হ্যান্ডল করা যায়। Spring Boot ব্যবহার করলে অ্যাপ্লিকেশন তৈরি করা অনেক সহজ হয়ে যায় এবং Spring MVC-এর সকল সুবিধা RESTful API এর জন্য উপলব্ধ হয়।
Read more