ভূমিকা
স্প্রিং ফ্রেমওয়ার্ক RESTful Web Services তৈরির জন্য একটি সহজ এবং কার্যকরী প্ল্যাটফর্ম প্রদান করে। RESTful ওয়েব সার্ভিস হল এমন একটি আর্কিটেকচারাল স্টাইল যেখানে HTTP প্রোটোকল ব্যবহার করে CRUD (Create, Read, Update, Delete) অপারেশন করা হয়। স্প্রিং ওয়েব ফ্রেমওয়ার্ক ব্যবহার করে RESTful API তৈরি করা দ্রুত এবং সুবিধাজনক।
প্রোজেক্টের মূল ফিচার
- স্প্রিং Spring Boot ব্যবহার করে RESTful API তৈরি করা হবে।
- HTTP মেথড (GET, POST, PUT, DELETE) ব্যবহার করা হবে।
- JSON ফরম্যাটে ডেটা পাঠানো এবং গ্রহণ করা হবে।
- ডেটা পরিচালনার জন্য Spring Data JPA ব্যবহার করা হবে।
উদাহরণ: একটি RESTful Web Service তৈরি
আমরা একটি Employee Management System তৈরি করব, যেখানে নিম্নলিখিত অপারেশনগুলো করা হবে:
- GET: সমস্ত কর্মচারীর তথ্য দেখা।
- POST: নতুন কর্মচারী যোগ করা।
- PUT: বিদ্যমান কর্মচারীর তথ্য আপডেট করা।
- DELETE: নির্দিষ্ট কর্মচারীর তথ্য মুছে ফেলা।
ধাপ ১: প্রোজেক্ট স্ট্রাকচার
src
├── main
│ ├── java
│ │ └── com.example.restservice
│ │ ├── RestServiceApplication.java
│ │ ├── controller
│ │ │ └── EmployeeController.java
│ │ ├── model
│ │ │ └── Employee.java
│ │ ├── repository
│ │ │ └── EmployeeRepository.java
│ │ └── service
│ │ └── EmployeeService.java
│ ├── resources
│ ├── application.properties
ধাপ ২: Maven ডিপেন্ডেন্সি
pom.xml-এ নিচের ডিপেন্ডেন্সি যোগ করুন:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
ধাপ ৩: মডেল ক্লাস তৈরি
Employee.java:
package com.example.restservice.model;
import jakarta.persistence.*;
@Entity
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String department;
private double salary;
// গেটার এবং সেটার
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
ধাপ ৪: রেপোজিটরি ইন্টারফেস তৈরি
EmployeeRepository.java:
package com.example.restservice.repository;
import com.example.restservice.model.Employee;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
}
ধাপ ৫: সার্ভিস ক্লাস তৈরি
EmployeeService.java:
package com.example.restservice.service;
import com.example.restservice.model.Employee;
import com.example.restservice.repository.EmployeeRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class EmployeeService {
@Autowired
private EmployeeRepository repository;
public List<Employee> getAllEmployees() {
return repository.findAll();
}
public Employee getEmployeeById(Long id) {
return repository.findById(id).orElseThrow(() -> new RuntimeException("Employee not found"));
}
public Employee saveEmployee(Employee employee) {
return repository.save(employee);
}
public Employee updateEmployee(Long id, Employee employee) {
Employee existingEmployee = getEmployeeById(id);
existingEmployee.setName(employee.getName());
existingEmployee.setDepartment(employee.getDepartment());
existingEmployee.setSalary(employee.getSalary());
return repository.save(existingEmployee);
}
public void deleteEmployee(Long id) {
repository.deleteById(id);
}
}
ধাপ ৬: কন্ট্রোলার ক্লাস তৈরি
EmployeeController.java:
package com.example.restservice.controller;
import com.example.restservice.model.Employee;
import com.example.restservice.service.EmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/employees")
public class EmployeeController {
@Autowired
private EmployeeService service;
// সমস্ত কর্মচারী দেখা
@GetMapping
public List<Employee> getAllEmployees() {
return service.getAllEmployees();
}
// নির্দিষ্ট কর্মচারী দেখা
@GetMapping("/{id}")
public Employee getEmployeeById(@PathVariable Long id) {
return service.getEmployeeById(id);
}
// নতুন কর্মচারী যোগ করা
@PostMapping
public Employee saveEmployee(@RequestBody Employee employee) {
return service.saveEmployee(employee);
}
// কর্মচারীর তথ্য আপডেট করা
@PutMapping("/{id}")
public Employee updateEmployee(@PathVariable Long id, @RequestBody Employee employee) {
return service.updateEmployee(id, employee);
}
// কর্মচারীর তথ্য মুছে ফেলা
@DeleteMapping("/{id}")
public String deleteEmployee(@PathVariable Long id) {
service.deleteEmployee(id);
return "Employee deleted successfully";
}
}
ধাপ ৭: অ্যাপ্লিকেশন চালানো
RestServiceApplication.java:
package com.example.restservice;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class RestServiceApplication {
public static void main(String[] args) {
SpringApplication.run(RestServiceApplication.class, args);
}
}
ধাপ ৮: অ্যাপ্লিকেশন প্রোপার্টিজ
application.properties:
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
API টেস্ট
GET: সমস্ত কর্মচারী
GET http://localhost:8080/api/employees
POST: নতুন কর্মচারী যোগ করা
POST http://localhost:8080/api/employees
Content-Type: application/json
{
"name": "John Doe",
"department": "IT",
"salary": 50000
}
PUT: কর্মচারীর তথ্য আপডেট
PUT http://localhost:8080/api/employees/1
Content-Type: application/json
{
"name": "John Smith",
"department": "HR",
"salary": 60000
}
DELETE: কর্মচারী মুছে ফেলা
DELETE http://localhost:8080/api/employees/1
এই উদাহরণটি একটি RESTful API তৈরি এবং পরিচালনার প্রাথমিক ধারণা প্রদান করে। স্প্রিং বুট এবং Spring Data JPA ব্যবহার করে RESTful ওয়েব সার্ভিস তৈরির কাজ সহজ হয়।
Read more