Spring OXM (Object-XML Mapping) এবং REST API এর মধ্যে একটি সম্পর্ক তৈরি হয় যখন REST API XML বা JSON ডেটার মাধ্যমে ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা বিনিময় করে। Spring OXM XML ডেটার serialization এবং deserialization পরিচালনা করে, যা RESTful সিস্টেমে XML-ভিত্তিক ডেটার প্রক্রিয়াকরণের জন্য উপযোগী। REST API সাধারণত JSON এবং XML উভয় ফরম্যাটে ডেটা প্রদান এবং গ্রহণ করতে সক্ষম হয়।
Spring OXM এবং REST API: সম্পর্ক
- Serialization এবং Deserialization:
- REST API-এর মাধ্যমে যখন XML ডেটা ক্লায়েন্ট থেকে সার্ভারে আসে বা সার্ভার থেকে ক্লায়েন্টে যায়, তখন Spring OXM এর Marshaller এবং Unmarshaller ব্যবহার করে Java Object এবং XML এর মধ্যে রূপান্তর করা যায়।
- এটি RESTful ওয়েব পরিষেবায় XML ফরম্যাটে ডেটা ট্রান্সফারের ক্ষেত্রে কার্যকর।
- বহুমুখী ডেটা ফরম্যাট সমর্থন:
- REST API-এর মাধ্যমে XML ডেটার জন্য Spring OXM সরাসরি JAXB-এর মতো ফ্রেমওয়ার্ককে সমর্থন করে।
- API-তে XML বা JSON রেসপন্স ফরম্যাট সামলানো সহজ হয়।
- বৈধতা:
- XML ডেটার স্কিমা যাচাই (XSD) করার জন্য Spring OXM ব্যবহার করা যায়, যা REST API-এর ডেটা সমতা নিশ্চিত করতে সহায়তা করে।
Spring OXM সহ REST API উদাহরণ
প্রয়োজনীয় নির্ভরতা (Maven)
<dependencies>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring OXM -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
</dependency>
<!-- JAXB API -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
</dependency>
</dependencies>
Java Model Class
package com.example.restoxm;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "user")
public class User {
private int id;
private String name;
private String email;
@XmlElement
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@XmlElement
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Spring Configuration
package com.example.restoxm;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
@Configuration
public class AppConfig {
@Bean
public Jaxb2Marshaller jaxb2Marshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setClassesToBeBound(User.class);
return marshaller;
}
}
REST Controller
package com.example.restoxm;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import org.springframework.web.bind.annotation.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.StringReader;
import java.io.StringWriter;
@RestController
@RequestMapping("/api/users")
public class UserController {
@Autowired
private Jaxb2Marshaller marshaller;
// Serialize Java Object to XML
@GetMapping(value = "/{id}", produces = MediaType.APPLICATION_XML_VALUE)
public String getUserAsXml(@PathVariable int id) throws Exception {
User user = new User();
user.setId(id);
user.setName("John Doe");
user.setEmail("john.doe@example.com");
StringWriter writer = new StringWriter();
marshaller.marshal(user, new StreamResult(writer));
return writer.toString();
}
// Deserialize XML to Java Object
@PostMapping(value = "/xml", consumes = MediaType.APPLICATION_XML_VALUE)
public String addUserFromXml(@RequestBody String xml) throws Exception {
StringReader reader = new StringReader(xml);
User user = (User) marshaller.unmarshal(new StreamSource(reader));
return "User added: " + user.getName() + ", Email: " + user.getEmail();
}
}
API-এর টেস্টিং
GET API (XML Response)
GET http://localhost:8080/api/users/1
Accept: application/xml
Response:
<user>
<id>1</id>
<name>John Doe</name>
<email>john.doe@example.com</email>
</user>
POST API (XML Request)
POST http://localhost:8080/api/users/xml
Content-Type: application/xml
<user>
<id>2</id>
<name>Jane Doe</name>
<email>jane.doe@example.com</email>
</user>
Response:
User added: Jane Doe, Email: jane.doe@example.com
Spring OXM এবং REST API-এর সুবিধা
- বহুমুখীতা: Spring OXM-এর মাধ্যমে REST API সহজে XML ফরম্যাট সমর্থন করতে পারে।
- স্ট্যান্ডার্ডাইজড ডেটা এক্সচেঞ্জ: XML এবং JSON উভয় ক্ষেত্রেই ডেটার নির্ভুলতা বজায় থাকে।
- সহজ একীকরণ: Spring OXM RESTful Controller-এ Marshaller এবং Unmarshaller ব্যবহার করে কার্যকর হয়।
- বৈধতা নিশ্চিতকরণ: XSD স্কিমা ব্যবহার করে ডেটার বৈধতা নিশ্চিত করা যায়।
উপসংহার
Spring OXM REST API-তে XML ডেটা হ্যান্ডলিংয়ের জন্য একটি শক্তিশালী পদ্ধতি সরবরাহ করে। এর মাধ্যমে REST API-তে XML ডেটা ট্রান্সফার আরও নির্ভুল এবং দক্ষ হয়।
Content added By
Read more