স্প্রিং বুট (Spring Boot) দিয়ে RESTful API তৈরি করা খুবই সহজ এবং কার্যকর। REST (Representational State Transfer) একটি সফটওয়্যার আর্কিটেকচার স্টাইল যা HTTP প্রোটোকল ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা আদান-প্রদান করার জন্য ব্যবহৃত হয়। স্প্রিং বুটের সাহায্যে RESTful API তৈরি করতে আমাদের প্রয়োজন কিছু সাধারণ কনসেপ্ট যেমন: @RestController, @RequestMapping, @GetMapping, @PostMapping ইত্যাদি।
এখানে আমরা একটি সাধারণ উদাহরণের মাধ্যমে স্প্রিং বুট ব্যবহার করে RESTful API তৈরির পুরো প্রক্রিয়া দেখব।
১. স্প্রিং বুট প্রকল্প তৈরি
প্রথমে একটি স্প্রিং বুট প্রকল্প তৈরি করতে হবে। আপনি স্প্রিং ইনিশিয়ালাইজার (Spring Initializr) ব্যবহার করে প্রকল্পটি তৈরি করতে পারেন, যা সহজেই ডিপেনডেন্সি চয়েস এবং অন্যান্য কনফিগারেশন করতে সহায়ক।
প্রকল্পটি তৈরি করার সময় নিচের ডিপেনডেন্সি গুলি নির্বাচন করুন:
- Spring Web (RESTful API এর জন্য)
- Spring Boot DevTools (ডেভেলপমেন্টে সুবিধার জন্য)
- Lombok (অবজেক্ট ক্লাসের জন্য সহজ getter, setter ইত্যাদি)
- Spring Data JPA (ডেটাবেস ইন্টিগ্রেশনের জন্য, যদি প্রয়োজন হয়)
২. RESTful API তৈরি করার উদাহরণ
ধরা যাক, আমাদের একটি ব্যবহারকারী (User) সম্পর্কিত API তৈরি করতে হবে। যেখানে ব্যবহারকারী সম্পর্কিত ডেটা রিট্রিভ (GET), যোগ (POST), আপডেট (PUT) এবং মুছে ফেলা (DELETE) হবে।
Step 1: মডেল ক্লাস তৈরি করা
প্রথমে আমাদের একটি User মডেল ক্লাস তৈরি করতে হবে, যা ব্যবহারকারীর তথ্য ধারণ করবে।
package com.example.demo.model;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class User {
@Id
private Long id;
private String name;
private String email;
}
এখানে আমরা @Entity অ্যানোটেশন ব্যবহার করেছি, যা এটি একটি JPA Entity ক্লাস হিসেবে চিহ্নিত করবে এবং এটি ডেটাবেসে একটি টেবিল হিসেবে ম্যাপ হবে।
Step 2: রেপোজিটরি (Repository) তৈরি করা
এখন, User মডেল ক্লাসের জন্য একটি Repository তৈরি করতে হবে যা ডেটাবেস অপারেশনগুলি পরিচালনা করবে। আমরা JpaRepository ব্যবহার করব যা ডেটাবেসের জন্য প্রয়োজনীয় সকল ফাংশনালিটি প্রদান করবে।
package com.example.demo.repository;
import com.example.demo.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
}
Step 3: কন্ট্রোলার (Controller) তৈরি করা
এখন, আমাদের RESTful API কন্ট্রোলার তৈরি করতে হবে। এখানে আমরা @RestController অ্যানোটেশন ব্যবহার করব, যা এই ক্লাসটিকে REST API কন্ট্রোলার হিসেবে চিহ্নিত করবে। API এর বিভিন্ন HTTP রিকোয়েস্ট (GET, POST, PUT, DELETE) হ্যান্ডল করার জন্য বিভিন্ন মেথড তৈরি করব।
package com.example.demo.controller;
import com.example.demo.model.User;
import com.example.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Optional;
@RestController
@RequestMapping("/api/users")
public class UserController {
@Autowired
private UserRepository userRepository;
// GET: Retrieve all users
@GetMapping
public List<User> getAllUsers() {
return userRepository.findAll();
}
// GET: Retrieve a user by ID
@GetMapping("/{id}")
public Optional<User> getUserById(@PathVariable Long id) {
return userRepository.findById(id);
}
// POST: Create a new user
@PostMapping
public User createUser(@RequestBody User user) {
return userRepository.save(user);
}
// PUT: Update an existing user
@PutMapping("/{id}")
public User updateUser(@PathVariable Long id, @RequestBody User user) {
user.setId(id);
return userRepository.save(user);
}
// DELETE: Delete a user by ID
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable Long id) {
userRepository.deleteById(id);
}
}
এখানে আমরা বিভিন্ন HTTP মেথডের জন্য উপযুক্ত ম্যাপিং ব্যবহার করেছি:
@GetMapping: GET রিকোয়েস্টের জন্য@PostMapping: POST রিকোয়েস্টের জন্য@PutMapping: PUT রিকোয়েস্টের জন্য@DeleteMapping: DELETE রিকোয়েস্টের জন্য
Step 4: অ্যাপ্লিকেশন চালু করা
এখন, আমাদের স্প্রিং বুট অ্যাপ্লিকেশনটি চালু করতে হবে। @SpringBootApplication অ্যানোটেশন ব্যবহার করে প্রধান অ্যাপ্লিকেশন ক্লাস তৈরি করা হয়।
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
৩. RESTful API এর টেস্টিং
আপনি Postman বা CURL ব্যবহার করে এই API গুলি টেস্ট করতে পারবেন।
GET Request:
এটি সকল ব্যবহারকারীর তালিকা ফেরত দেবে:
GET http://localhost:8080/api/users
GET Request (By ID):
এটি নির্দিষ্ট ব্যবহারকারী তথ্য ফেরত দেবে:
GET http://localhost:8080/api/users/{id}
POST Request:
এটি নতুন ব্যবহারকারী তৈরি করবে:
POST http://localhost:8080/api/users
Body:
{
"id": 1,
"name": "John Doe",
"email": "john@example.com"
}
PUT Request:
এটি একটি ব্যবহারকারী তথ্য আপডেট করবে:
PUT http://localhost:8080/api/users/{id}
Body:
{
"name": "John Updated",
"email": "johnupdated@example.com"
}
DELETE Request:
এটি একটি ব্যবহারকারী মুছে ফেলবে:
DELETE http://localhost:8080/api/users/{id}
উপসংহার
স্প্রিং বুট দিয়ে RESTful API তৈরি করা খুবই সহজ এবং দ্রুত। এটি ডেভেলপমেন্ট প্রক্রিয়াকে সহজ করে তোলে, বিশেষ করে যখন আমরা ডেটাবেসের সাথে সংযুক্ত কোনো অ্যাপ্লিকেশন তৈরি করতে চাই। এখানে আমরা একটি মৌলিক উদাহরণ দেখলাম যেখানে User মডেল, রেপোজিটরি এবং কন্ট্রোলার ব্যবহার করে একটি RESTful API তৈরি করা হয়েছে। এই API এর মাধ্যমে ডেটা রিট্রিভ, তৈরি, আপডেট এবং মুছে ফেলার কাজ করা সম্ভব।
Read more