স্প্রিং ওএক্সএম (Spring OXM) ব্যবহার করে REST API Integration উদাহরণসহ দেখানো হল। এখানে আমরা একটি REST API তৈরি করব যা XML ডেটা পাঠাবে এবং গ্রহণ করবে, এবং এই ডেটার জন্য স্প্রিং ওএক্সএম ব্যবহার করে Marshalling ও Unmarshalling করা হবে।
ধাপ ১: প্রয়োজনীয় ডিপেন্ডেন্সি যোগ করা (Maven)
<dependencies>
<!-- Spring 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 for XML Marshalling -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
</dependencies>
ধাপ ২: JAXB মডেল তৈরি করা
Student মডেল:
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "student")
public class Student {
private String id;
private String name;
private String department;
@XmlElement
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@XmlElement
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
}
ধাপ ৩: স্প্রিং ওএক্সএম কনফিগারেশন
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
@Configuration
public class OXMConfig {
@Bean
public Jaxb2Marshaller marshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setClassesToBeBound(Student.class);
return marshaller;
}
}
ধাপ ৪: REST API কনট্রোলার
import org.springframework.beans.factory.annotation.Autowired;
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/students")
public class StudentController {
@Autowired
private Jaxb2Marshaller marshaller;
// POST Request to Accept XML and Convert to Object
@PostMapping(consumes = "application/xml", produces = "application/xml")
public String createStudent(@RequestBody String xmlData) {
try {
// Unmarshalling: XML to Object
StringReader reader = new StringReader(xmlData);
Student student = (Student) marshaller.unmarshal(new StreamSource(reader));
// Business logic (for example purposes)
student.setName(student.getName() + " (Processed)");
// Marshalling: Object to XML
StringWriter writer = new StringWriter();
marshaller.marshal(student, new StreamResult(writer));
return writer.toString();
} catch (Exception e) {
return "<error>Invalid XML</error>";
}
}
}
ধাপ ৫: API টেস্ট করা
১. POST Request পাঠানো:
POST /api/students
Content-Type: application/xml
Accept: application/xml
<student>
<id>1</id>
<name>John Doe</name>
<department>Computer Science</department>
</student>
২. Response:
<student>
<id>1</id>
<name>John Doe (Processed)</name>
<department>Computer Science</department>
</student>
উপকারিতা:
- XML ডেটা হ্যান্ডলিং: Spring OXM ব্যবহার করে XML ডেটার ম্যাপিং অত্যন্ত সহজ এবং কার্যকর।
- ফ্লেক্সিবল: জাভা অবজেক্ট এবং XML ডেটার মধ্যে দ্বিমুখী রূপান্তর দ্রুত হয়।
- REST API ইন্টিগ্রেশন: XML ভিত্তিক API-এর জন্য আদর্শ।
আপনার যদি এই উদাহরণে আরও কিছু কাস্টমাইজেশন প্রয়োজন হয়, তাহলে জানাবেন! 😊
Content added By
Read more