RESTful Web Services এর সাথে Spring Web Services

স্প্রিং ওয়েব সার্ভিসেস (Spring Web Services) - Java Technologies

295

Spring Web Services সাধারণত SOAP ভিত্তিক ওয়েব সার্ভিসের জন্য ব্যবহৃত হয়, তবে RESTful Web Services তৈরির জন্য Spring Framework এর Spring MVC বা Spring Boot REST মডিউল ব্যবহার করা হয়। RESTful Web Services এবং SOAP ওয়েব সার্ভিসের কাজের মধ্যে মৌলিক পার্থক্য থাকলেও, উভয়কে একই প্রজেক্টে ব্যবহার করা সম্ভব।


RESTful Web Services এবং Spring Web Services-এর পার্থক্য

বৈশিষ্ট্যSOAP (Spring Web Services)RESTful Web Services
প্রটোকলSOAP প্রোটোকল ব্যবহার করেHTTP প্রোটোকল ব্যবহার করে
ডেটা ফরম্যাটXMLXML, JSON, YAML ইত্যাদি
মেসেজিং স্টাইলচুক্তি-ভিত্তিক (Contract-Based)সম্পদ-ভিত্তিক (Resource-Based)
ব্যবহারযোগ্যতাএন্টারপ্রাইজ লেভেলের অ্যাপ্লিকেশনে ব্যবহৃতAPI ড্রিভেন এবং ওয়েব ভিত্তিক অ্যাপ্লিকেশনে ব্যবহৃত
সহজতাতুলনামূলক জটিলসহজ এবং হালকা

RESTful Web Services-এর সাথে Spring Web Services ব্যবহার

একটি প্রজেক্টে SOAP এবং RESTful ওয়েব সার্ভিস উভয়ই ব্যবহার করা যায়। এর জন্য Spring Framework-এর বিভিন্ন অংশ ব্যবহার করা হয়।

Spring Boot REST API সেটআপ

RESTful API তৈরির জন্য Spring Boot-এর সাহায্যে REST কন্ট্রোলার সেটআপ করা হয়।

@RestController
@RequestMapping("/api")
public class RestExampleController {

    @GetMapping("/example")
    public ResponseEntity<String> getExample() {
        return ResponseEntity.ok("This is a RESTful response");
    }
}

Spring Web Services (SOAP) সেটআপ

SOAP এন্ডপয়েন্ট সেটআপ করতে Spring Web Services ব্যবহার করা হয়। উদাহরণ:

@Endpoint
public class SoapExampleEndpoint {

    @PayloadRoot(namespace = "http://example.com/ws", localPart = "GetExampleRequest")
    @ResponsePayload
    public GetExampleResponse handleSoapRequest(@RequestPayload GetExampleRequest request) {
        GetExampleResponse response = new GetExampleResponse();
        response.setMessage("SOAP Response for ID: " + request.getId());
        return response;
    }
}

REST এবং SOAP একত্রে ব্যবহারের সুবিধা

  1. বহুমুখীতা (Versatility): একই প্রজেক্টে REST এবং SOAP উভয় প্রোটোকল সমর্থন করা যায়।
  2. API এবং এন্টারপ্রাইজ সার্ভিস: REST API ক্লায়েন্ট-সাইড অ্যাপ্লিকেশনের জন্য এবং SOAP এন্টারপ্রাইজ লেভেলের ইনটিগ্রেশনের জন্য উপযোগী।
  3. উন্নত ডেটা এক্সচেঞ্জ: JSON, XML, এবং SOAP প্রোটোকল একত্রে ব্যবহার করে ডেটা এক্সচেঞ্জ আরও নমনীয় করা যায়।

RESTful Web Services-এ XML এবং JSON সমর্থন

RESTful API-তে Spring Boot সহজেই JSON এবং XML ফরম্যাটে ডেটা রিটার্ন করতে পারে।

JSON Response

@GetMapping("/json")
public ResponseEntity<Map<String, String>> getJsonResponse() {
    Map<String, String> response = new HashMap<>();
    response.put("message", "This is a JSON response");
    return ResponseEntity.ok(response);
}

XML Response

@GetMapping(value = "/xml", produces = MediaType.APPLICATION_XML_VALUE)
public ResponseEntity<ExampleResponse> getXmlResponse() {
    ExampleResponse response = new ExampleResponse();
    response.setMessage("This is an XML response");
    return ResponseEntity.ok(response);
}

SOAP এবং REST API-এর জন্য একই ডোমেন লজিক ব্যবহার

SOAP এবং REST API-এর জন্য একই ডোমেন লজিক ব্যবহার করতে Service Layer তৈরির পদ্ধতি অনুসরণ করা হয়।

ডোমেন লজিক

@Service
public class ExampleService {
    public String getMessageById(int id) {
        return "Message for ID: " + id;
    }
}

REST API

@RestController
@RequestMapping("/api")
public class RestExampleController {

    @Autowired
    private ExampleService exampleService;

    @GetMapping("/message/{id}")
    public ResponseEntity<String> getMessage(@PathVariable int id) {
        return ResponseEntity.ok(exampleService.getMessageById(id));
    }
}

SOAP এন্ডপয়েন্ট

@Endpoint
public class SoapExampleEndpoint {

    @Autowired
    private ExampleService exampleService;

    @PayloadRoot(namespace = "http://example.com/ws", localPart = "GetExampleRequest")
    @ResponsePayload
    public GetExampleResponse handleRequest(@RequestPayload GetExampleRequest request) {
        GetExampleResponse response = new GetExampleResponse();
        response.setMessage(exampleService.getMessageById(request.getId()));
        return response;
    }
}

Spring Boot-এ SOAP এবং RESTful API এর রাউটিং

Spring Boot-এ SOAP এবং RESTful API-এর জন্য পৃথক URI ব্যবহার করে রাউটিং পরিচালনা করা যায়:

  • SOAP এন্ডপয়েন্ট: /ws
  • RESTful API এন্ডপয়েন্ট: /api

সারাংশ

Spring Web Services এবং RESTful Web Services একই প্রজেক্টে একত্রে ব্যবহার করে SOAP-এর দৃঢ়তা এবং REST-এর সহজতা একত্রিত করা যায়। Spring Framework উভয় স্টাইল সমর্থন করায় এটি একটি শক্তিশালী সমাধান হয়ে ওঠে। REST API সাধারণত JSON/XML ফরম্যাটে ব্যবহারকারীকে সহজ ও হালকা সেবা প্রদান করে, যেখানে SOAP এন্টারপ্রাইজ লেভেলে জটিল ইন্টিগ্রেশনের জন্য ব্যবহৃত হয়।

Content added By

RESTful Web Services কি?

REST (Representational State Transfer) একটি আর্কিটেকচারাল স্টাইল, যা HTTP প্রোটোকলের মাধ্যমে ওয়েব সার্ভিস তৈরি এবং পরিচালনা করতে ব্যবহৃত হয়। RESTful Web Services হল এমন ওয়েব সার্ভিস যা REST আর্কিটেকচারের নিয়ম মেনে কাজ করে। এটি ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা আদান-প্রদানের জন্য সহজ, দ্রুত এবং লাইটওয়েট মেকানিজম প্রদান করে।


RESTful Web Services এর মূল বৈশিষ্ট্য

  • Stateless (স্টেটলেস): প্রতিটি রিকোয়েস্ট স্বতন্ত্র, অর্থাৎ সার্ভার রিকোয়েস্টের আগের অবস্থা স্মরণ রাখে না।
  • Resource-Based Architecture: REST-এ প্রতিটি ডেটা একটি Resource হিসাবে বিবেচিত হয় এবং একটি ইউনিক URI (Uniform Resource Identifier) দ্বারা চিহ্নিত হয়।
  • HTTP Methods: GET, POST, PUT, DELETE ইত্যাদি HTTP মেথড ব্যবহার করে অপারেশন করা হয়।
  • Representation: Resource-কে বিভিন্ন ফরম্যাটে, যেমন JSON, XML, বা HTML, রিটার্ন করা যায়।
  • Layered System: সার্ভারের বিভিন্ন স্তর আলাদা থাকে, যা সিস্টেমকে সহজ এবং নিরাপদ করে তোলে।

RESTful Web Services এর গঠন

RESTful Web Services তৈরির জন্য কয়েকটি গুরুত্বপূর্ণ উপাদান এবং গঠন নিচে আলোচনা করা হলো:

১. Resource URI

প্রতিটি রিসোর্সের জন্য একটি ইউনিক URI থাকে। উদাহরণস্বরূপ, যদি আমরা একটি Employee Management System তৈরি করি:

  • GET /employees – সব কর্মচারীর তালিকা দেখাবে।
  • GET /employees/{id} – নির্দিষ্ট কর্মচারীর তথ্য দেখাবে।
  • POST /employees – নতুন কর্মচারী যোগ করবে।
  • PUT /employees/{id} – বিদ্যমান কর্মচারীর তথ্য আপডেট করবে।
  • DELETE /employees/{id} – নির্দিষ্ট কর্মচারীর তথ্য মুছে ফেলবে।

২. HTTP Methods

RESTful Web Services সাধারণত নিচের HTTP মেথডগুলো ব্যবহার করে:

  • GET: রিসোর্স পড়ার জন্য।
  • POST: নতুন রিসোর্স তৈরি করার জন্য।
  • PUT: বিদ্যমান রিসোর্স আপডেট করার জন্য।
  • DELETE: রিসোর্স মুছে ফেলার জন্য।

৩. Representation Format

ডেটা সাধারণত JSON বা XML ফরম্যাটে আদান-প্রদান করা হয়। JSON বেশি ব্যবহৃত কারণ এটি লাইটওয়েট এবং পাঠযোগ্য।

৪. স্ট্যাটাস কোড

RESTful Web Services HTTP স্ট্যাটাস কোড ব্যবহার করে রেসপন্সের অবস্থা জানায়:

  • 200 OK: সফল রিকোয়েস্ট।
  • 201 Created: নতুন রিসোর্স তৈরি হয়েছে।
  • 400 Bad Request: ভুল রিকোয়েস্ট।
  • 404 Not Found: রিসোর্স পাওয়া যায়নি।
  • 500 Internal Server Error: সার্ভারের অভ্যন্তরীণ ত্রুটি।

৫. HATEOAS (Hypermedia As The Engine Of Application State)

RESTful Web Servicesে রেসপন্সের মধ্যে রিসোর্সের সঙ্গে সম্পর্কিত লিঙ্ক (Hypermedia) প্রদান করা হয়। উদাহরণস্বরূপ, /employees এ গেলে প্রতিটি কর্মচারীর জন্য /employees/{id} লিঙ্ক পাওয়া যাবে।


RESTful Web Services এর উদাহরণ

কনট্রোলার ক্লাস:

@RestController
@RequestMapping("/employees")
public class EmployeeController {

    @GetMapping
    public List<Employee> getAllEmployees() {
        return Arrays.asList(
            new Employee(1, "John Doe", "Developer"),
            new Employee(2, "Jane Smith", "Manager")
        );
    }

    @GetMapping("/{id}")
    public Employee getEmployeeById(@PathVariable int id) {
        return new Employee(id, "John Doe", "Developer");
    }

    @PostMapping
    public String createEmployee(@RequestBody Employee employee) {
        return "Employee created with name: " + employee.getName();
    }

    @PutMapping("/{id}")
    public String updateEmployee(@PathVariable int id, @RequestBody Employee employee) {
        return "Employee with ID " + id + " updated to name: " + employee.getName();
    }

    @DeleteMapping("/{id}")
    public String deleteEmployee(@PathVariable int id) {
        return "Employee with ID " + id + " deleted.";
    }
}

মডেল ক্লাস:

public class Employee {
    private int id;
    private String name;
    private String position;

    public Employee(int id, String name, String position) {
        this.id = id;
        this.name = name;
        this.position = position;
    }

    // গেটার এবং সেটার মেথড
}

উদাহরণ JSON রেসপন্স:

GET /employees/1 এর জন্য রেসপন্স:

{
    "id": 1,
    "name": "John Doe",
    "position": "Developer"
}

RESTful Web Services এর সুবিধা

  • সহজ এবং দ্রুত: HTTP প্রোটোকল ব্যবহার করায় সহজ এবং দ্রুত।
  • লাইটওয়েট: SOAP-এর তুলনায় লাইটওয়েট, JSON বা XML ফরম্যাটে কাজ করে।
  • ব্রাউজার ফ্রেন্ডলি: URL এর মাধ্যমে সহজে ব্রাউজারে পরীক্ষা করা যায়।
  • স্কেলেবল এবং নমনীয়: সহজেই নতুন ফিচার যোগ করা যায়।

সারাংশ:
RESTful Web Services হল ডেটা আদান-প্রদানের জন্য HTTP প্রোটোকল-ভিত্তিক একটি লাইটওয়েট ও দ্রুত মেকানিজম। এটি বিভিন্ন HTTP মেথড, URI, এবং স্ট্যাটাস কোড ব্যবহার করে কার্যকরী ওয়েব সার্ভিস গঠন করে। স্প্রিং ফ্রেমওয়ার্ক RESTful Web Services তৈরির জন্য সরল এবং শক্তিশালী সমাধান প্রদান করে।

Content added By

Spring Boot RESTful Web Service এমন একটি পরিষেবা যা HTTP প্রোটোকলের মাধ্যমে ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা আদান-প্রদান করতে ব্যবহৃত হয়। এটি REST (Representational State Transfer) আর্কিটেকচার অনুসরণ করে এবং JSON, XML, বা অন্যান্য ফরম্যাটে ডেটা এক্সচেঞ্জ করতে পারে।

নিচে Spring Boot দিয়ে RESTful Web Service তৈরির একটি গাইড দেওয়া হলো।


প্রয়োজনীয় ডিপেনডেন্সি

Spring Boot RESTful Web Service এর জন্য প্রয়োজনীয় ডিপেনডেন্সি Maven বা Gradle ফাইল যোগ করতে হবে।

Maven:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Gradle:

implementation 'org.springframework.boot:spring-boot-starter-web'

স্টেপ ১: Spring Boot প্রজেক্ট তৈরি করা

Spring Initializr (https://start.spring.io/) এর মাধ্যমে একটি Spring Boot প্রজেক্ট তৈরি করুন এবং নিচের ডিপেনডেন্সিগুলো যুক্ত করুন:

  • Spring Web
  • Spring Boot DevTools (ঐচ্ছিক)

স্টেপ ২: REST Controller তৈরি করা

RESTful API তৈরির জন্য একটি @RestController অ্যানোটেশন ব্যবহার করা হয়।

Example:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class UserController {

    @GetMapping("/users/{id}")
    public User getUserById(@PathVariable int id) {
        return new User(id, "John Doe", "john.doe@example.com");
    }
}

স্টেপ ৩: মডেল ক্লাস তৈরি করা

ডেটা রিপ্রেজেন্টেশনের জন্য একটি মডেল ক্লাস তৈরি করুন।

Example:

public class User {
    private int id;
    private String name;
    private String email;

    public User(int id, String name, String email) {
        this.id = id;
        this.name = name;
        this.email = email;
    }

    // Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

স্টেপ ৪: RESTful Endpoints তৈরি করা

Spring Boot-এ RESTful Endpoint তৈরি করতে @GetMapping, @PostMapping, @PutMapping, এবং @DeleteMapping অ্যানোটেশন ব্যবহার করা হয়।

Example: Create User 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("/users")
    public String createUser(@RequestBody User user) {
        return "User created with name: " + user.getName();
    }
}

স্টেপ ৫: ডেটা টেস্ট করা

Spring Boot DevTools বা Postman এর মাধ্যমে তৈরি করা REST API টেস্ট করতে পারবেন।

GET Endpoint Example:

GET http://localhost:8080/api/users/1

Response:

{
    "id": 1,
    "name": "John Doe",
    "email": "john.doe@example.com"
}

POST Endpoint Example:

POST http://localhost:8080/api/users
Content-Type: application/json

{
    "id": 2,
    "name": "Jane Doe",
    "email": "jane.doe@example.com"
}

Response:

User created with name: Jane Doe

স্টেপ ৬: Exception Handling (ঐচ্ছিক)

Custom Exception এবং Global Exception Handler যোগ করা যেতে পারে।

Custom Exception:

public class UserNotFoundException extends RuntimeException {
    public UserNotFoundException(String message) {
        super(message);
    }
}

Exception Handler:

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(UserNotFoundException.class)
    public ResponseEntity<String> handleUserNotFound(UserNotFoundException ex) {
        return new ResponseEntity<>(ex.getMessage(), HttpStatus.NOT_FOUND);
    }
}

Spring Boot RESTful Web Service এর সুবিধা

  • Spring Boot এর মাধ্যমে REST API তৈরি করা দ্রুত এবং সহজ।
  • স্বয়ংক্রিয় কনফিগারেশন, যা ডেভেলপমেন্ট টাইম কমায়।
  • JSON/XML সাপোর্ট ডিফল্টভাবে পাওয়া যায়।
  • সহজ Exception Handling এর জন্য বিল্ট-ইন সাপোর্ট।
  • অন্যান্য Spring মডিউলের সাথে সহজ ইন্টিগ্রেশন।

Spring Boot RESTful Web Service একটি আধুনিক ওয়েব অ্যাপ্লিকেশন তৈরি করতে একটি কার্যকর টুল। এটি দ্রুত এবং সহজে REST API তৈরি ও পরিচালনা করতে সাহায্য করে।

Content added By

Spring Framework ব্যবহার করে দুটি প্রধান ধরণের ওয়েব সার্ভিস তৈরি করা যায়: SOAP (Simple Object Access Protocol) এবং RESTful (Representational State Transfer) Web Services। এই দুটি প্রযুক্তি ভিন্ন ভিন্ন প্রয়োজন মেটাতে ব্যবহৃত হয়। নিচে তাদের মধ্যে পার্থক্যগুলো আলোচনা করা হলো।


SOAP Web Services

বৈশিষ্ট্য

  • প্রোটোকল-ভিত্তিক: SOAP একটি প্রোটোকল যা শুধুমাত্র XML ব্যবহার করে মেসেজ বিনিময় করে।
  • ফরম্যাট: SOAP মেসেজ সবসময় একটি নির্দিষ্ট ফরম্যাটে (Envelope, Header, Body) থাকে।
  • স্ট্যান্ডার্ড: SOAP স্ট্যান্ডার্ড যেমন WS-Security, WS-Addressing অনুসরণ করে।
  • ট্রান্সপোর্ট প্রোটোকল: SOAP শুধুমাত্র HTTP নয়, SMTP এবং অন্যান্য প্রোটোকলের উপরেও কাজ করে।
  • ফর্মাল কন্ট্রাক্ট: SOAP-এ WSDL (Web Services Description Language) ব্যবহার করে একটি ফর্মাল কন্ট্রাক্ট তৈরি করা হয়।
  • এন্টারপ্রাইজ-গ্রেড: SOAP এন্টারপ্রাইজ সমাধান যেমন ব্যাংকিং বা ফাইন্যান্সিয়াল সার্ভিসের জন্য উপযোগী।

সুবিধা

  • স্ট্রং সিকিউরিটি (WS-Security সমর্থন করে)।
  • ট্রান্স্যাকশনাল সাপোর্ট এবং ফরমাল চুক্তি।
  • বিভিন্ন ট্রান্সপোর্ট প্রোটোকল সাপোর্ট।

সীমাবদ্ধতা

  • জটিল এবং বেশি রিসোর্স ব্যবহার করে।
  • শুধুমাত্র XML ফরম্যাট সাপোর্ট করে।

RESTful Web Services

বৈশিষ্ট্য

  • আর্কিটেকচারাল স্টাইল: REST একটি আর্কিটেকচারাল স্টাইল যা HTTP প্রোটোকলের উপর ভিত্তি করে কাজ করে।
  • ফরম্যাট: REST XML, JSON, YAML, বা অন্যান্য ফরম্যাটে ডেটা আদান-প্রদান করতে পারে।
  • URI ভিত্তিক রিসোর্স: প্রতিটি রিসোর্স একটি ইউনিক URI (Uniform Resource Identifier) দ্বারা চিহ্নিত হয়।
  • HTTP মেথড: REST সাধারণত HTTP মেথড (GET, POST, PUT, DELETE) ব্যবহার করে।
  • লাইটওয়েট: REST তুলনামূলকভাবে লাইটওয়েট এবং দ্রুত।

সুবিধা

  • JSON এবং অন্যান্য হালকা ডেটা ফরম্যাট সাপোর্ট করে।
  • দ্রুত এবং কমপ্লেক্সিটি কম।
  • সহজে ব্রাউজারে সাপোর্ট এবং API ডকুমেন্টেশন সহজ।

সীমাবদ্ধতা

  • সিকিউরিটি ফিচার তুলনামূলকভাবে দুর্বল।
  • নির্দিষ্ট ধরনের ট্রান্স্যাকশনাল সমর্থন কম।

SOAP এবং REST এর মধ্যে প্রধান পার্থক্য

বৈশিষ্ট্যSOAPRESTful
প্রোটোকলপ্রোটোকল-ভিত্তিক (SOAP প্রোটোকল)আর্কিটেকচারাল স্টাইল (HTTP)
ডেটা ফরম্যাটশুধুমাত্র XMLXML, JSON, YAML, HTML ইত্যাদি
স্ট্যান্ডার্ডWS-Security, WS-Addressing ইত্যাদিকোনও নির্দিষ্ট স্ট্যান্ডার্ড নেই
ট্রান্সপোর্ট প্রোটোকলHTTP, SMTP ইত্যাদিশুধুমাত্র HTTP
মেসেজ স্ট্রাকচারনির্দিষ্ট ফরম্যাট (Envelope)ফ্লেক্সিবল (HTTP রিকোয়েস্ট/রেসপন্স)
কন্ট্রাক্টWSDL ব্যবহারকন্ট্রাক্ট-লেস
স্পিডতুলনামূলকভাবে ধীরতুলনামূলকভাবে দ্রুত
সিকিউরিটিWS-Security সমর্থিতসাধারণত OAuth বা JWT ব্যবহার
ব্যবহারএন্টারপ্রাইজ সল্যুশন (ব্যাংকিং, ফাইন্যান্স)ওয়েব এবং মোবাইল API

কাকে ব্যবহার করবেন?

  • SOAP:
    • যদি এন্টারপ্রাইজ সমাধান প্রয়োজন হয়, যেখানে সিকিউরিটি এবং ট্রান্স্যাকশন গুরুত্বপূর্ণ।
    • ব্যাংকিং, পেমেন্ট প্রসেসিং, অথবা ব্যবসায়িক ক্রিটিক্যাল অ্যাপ্লিকেশনে।
  • REST:
    • যদি লাইটওয়েট এবং দ্রুত API প্রয়োজন হয়।
    • মোবাইল অ্যাপ্লিকেশন, ওয়েবসাইট API, অথবা সহজ ইন্টিগ্রেশনের জন্য।

সারাংশ

SOAP এবং RESTful Web Services-এর মধ্যে পার্থক্য তাদের প্রয়োজন অনুযায়ী নির্বাচন করতে সহায়তা করে। SOAP জটিল এবং সুরক্ষিত এন্টারপ্রাইজ সল্যুশনের জন্য উপযোগী, যেখানে REST লাইটওয়েট এবং দ্রুত API ডেভেলপমেন্টের জন্য উপযুক্ত।


Content added By

ভূমিকা

স্প্রিং ফ্রেমওয়ার্ক 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 ওয়েব সার্ভিস তৈরির কাজ সহজ হয়।

Content added By
Promotion

Are you sure to start over?

Loading...