REST (Representational State Transfer) একটি আর্কিটেকচারাল স্টাইল যা ওয়েব সার্ভিস তৈরি করতে ব্যবহৃত হয়। Struts 2-এ RESTful Web Services তৈরি করতে Struts 2 REST Plugin ব্যবহার করা হয়। Struts 2 এর মাধ্যমে RESTful অ্যাপ্লিকেশন তৈরি করতে পারেন, যা সহজে HTTP রিকোয়েস্ট প্রক্রিয়া করে এবং JSON, XML, বা অন্যান্য ফরম্যাটে রেসপন্স দেয়।
1. Struts 2 এবং REST Integration কেন প্রয়োজন?
- RESTful Web Services ওয়েব অ্যাপ্লিকেশন ও মোবাইল অ্যাপ্লিকেশনগুলির মধ্যে ডেটা বিনিময়ের জন্য জনপ্রিয় একটি পদ্ধতি।
- এটি HTTP, URI, JSON, এবং XML এর উপর ভিত্তি করে কাজ করে এবং ক্লায়েন্ট-সার্ভার কমিউনিকেশন সহজ করে তোলে।
- Struts 2 এর মাধ্যমে RESTful ওয়েব সার্ভিস তৈরি করার জন্য একটি প্রোজেক্টের HTTP রিকুয়েস্টকে যথাযথভাবে প্রক্রিয়া করা হয় এবং JSON বা XML ফরম্যাটে রেসপন্স প্রদান করা হয়।
2. Struts 2 REST Plugin কনফিগারেশন
Struts 2 REST Integration এর জন্য প্রথমে Struts 2 REST Plugin ব্যবহার করতে হয়। নিচে তার কনফিগারেশন দেওয়া হয়েছে।
1. Maven Dependency
Maven ব্যবহার করে Struts 2 REST Plugin এর ডিপেনডেন্সি pom.xml ফাইলে যুক্ত করতে হবে।
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-rest-plugin</artifactId>
<version>2.5.22</version>
</dependency>
- struts2-rest-plugin এর মাধ্যমে Struts 2 অ্যাপ্লিকেশন RESTful ফিচার সমর্থন করবে।
2. struts.xml কনফিগারেশন
Struts 2-এ RESTful ওয়েব সার্ভিস কনফিগার করার জন্য struts.xml ফাইলে কিছু কনফিগারেশন করতে হবে। এখানে একটি REST Action তৈরি করা হয়েছে।
<struts>
<package name="default" extends="struts-default,rest-default">
<!-- RESTful action -->
<action name="user/{id}" class="com.example.UserAction" method="get">
<result type="json"/>
</action>
</package>
</struts>
- এখানে,
user/{id}রিকুয়েস্ট প্যাটার্নটি RESTful একশন হিসাবে কনফিগার করা হয়েছে। {id}ডাইনামিক প্যারামিটার হিসাবে কাজ করবে, যা UserAction ক্লাসে পাওয়া যাবে।getমেথডের মাধ্যমে RESTful রিকুয়েস্ট হবে এবং তার রেসপন্স JSON ফরম্যাটে হবে।
3. Action Class
RESTful সার্ভিসের জন্য একটি Action Class তৈরি করতে হবে, যেখানে ব্যবসায়িক লজিক এবং HTTP রিকুয়েস্ট হ্যান্ডলিং করা হবে।
package com.example;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.interceptor.annotations.InputConfig;
import org.apache.struts2.rest.DefaultHttpHeaders;
public class UserAction extends ActionSupport {
private String id;
private String name;
// Getter and Setter for 'id' and 'name'
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// RESTful method to get user details by id
public String get() {
// Just a simple example where name is set based on id
if ("1".equals(id)) {
name = "John Doe";
} else {
name = "Unknown User";
}
return SUCCESS;
}
// Default method for JSON result
public DefaultHttpHeaders execute() {
return new DefaultHttpHeaders("get").disableCaching();
}
}
- UserAction ক্লাসে
get()মেথড ব্যবহার করা হয়েছে, যা ডাইনামিক প্যারামিটারidথেকে ডাটা নিয়ে সেই ইউজারের নাম প্রদান করে। - এখানে,
get()মেথডের মাধ্যমেidভিত্তিতে ইউজারের নাম নির্ধারণ করা হয়েছে এবং JSON আউটপুট রিটার্ন করা হবে।
3. JSON Result Type
JSON রেসপন্স প্রাপ্তি নিশ্চিত করার জন্য struts.xml ফাইলে <result type="json"/> ব্যবহার করা হয়েছে। Struts 2-এ, JSON রেসপন্স পাঠানোর জন্য Struts 2 REST Plugin এর মাধ্যমে JSON ফরম্যাটে ডাটা রিটার্ন করা হয়।
4. JSP / JSON Response
যেহেতু এটি একটি RESTful ওয়েব সার্ভিস, এখানে সাধারণত JSP পৃষ্ঠার পরিবর্তে JSON আউটপুট রিটার্ন হবে। কিন্তু, আপনি যদি JSP পৃষ্ঠায় ডাটা শো করতে চান তবে আপনি Struts 2 JSON Plugin ব্যবহার করে সরাসরি JSON রেসপন্স রেন্ডার করতে পারেন।
hello.jsp:
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<title>User Details</title>
</head>
<body>
<h2>User Details for ID: <s:property value="id" /></h2>
<p>Name: <s:property value="name" /></p>
</body>
</html>
এখানে, struts.json এর মাধ্যমে JSON রেসপন্স প্রেরণ করা যাবে এবং সেখান থেকে অ্যাকশন ক্লাসের name এবং id প্রপার্টি JSON আউটপুট রেন্ডার করবে।
5. Test and Run
এই RESTful সার্ভিসটি পরীক্ষা করার জন্য, আপনাকে এই URL এ একটি GET রিকুয়েস্ট পাঠাতে হবে:
http://localhost:8080/struts2-rest/user/1
যেখানে 1 হল ইউজারের ID এবং name ফিল্ড JSON আউটপুট হিসেবে John Doe হবে।
উদাহরণ JSON রেসপন্স:
{
"id": "1",
"name": "John Doe"
}
6. Struts 2 REST এর সুবিধা
- Simplified RESTful Service Development:
Struts 2 REST Plugin আপনাকে সহজেই RESTful ওয়েব সার্ভিস তৈরি করতে সহায়তা করে। এতে প্রয়োজনীয় কনফিগারেশন এবং মেথডগুলি সরাসরি সরবরাহ করা হয়। - JSON এবং XML রেসপন্স:
RESTful API ডেভেলপ করতে JSON এবং XML রেসপন্স সহজে তৈরি করা যায়, যা মোবাইল এবং ওয়েব ক্লায়েন্টসের জন্য কার্যকর। - Flexible URL Mapping:
Struts 2 REST plugin আপনাকে URL প্যাটার্ন কাস্টমাইজ করতে দেয়, যেমন{id},{action}, ইত্যাদি। - Integration with Other Frameworks:
Struts 2 RESTful ওয়েব সার্ভিস অন্যান্য ফ্রেমওয়ার্ক যেমন Spring, Hibernate ইত্যাদির সাথে ইন্টিগ্রেট করা যায়, যা পুরোপুরি স্কেলেবল ও উন্নত সার্ভিস তৈরি করতে সাহায্য করে।
সারাংশ
Struts 2 REST Integration এর মাধ্যমে আপনি সহজেই RESTful Web Services তৈরি করতে পারেন, যা HTTP রিকুয়েস্ট প্রক্রিয়া করে এবং JSON বা XML ফরম্যাটে রেসপন্স প্রদান করে। Struts 2 REST Plugin আপনাকে RESTful সার্ভিস তৈরি করার জন্য প্রয়োজনীয় টুলস সরবরাহ করে, যা আপনার অ্যাপ্লিকেশনের কাজের গতি বাড়ায় এবং মোবাইল অ্যাপ্লিকেশন বা অন্যান্য ক্লায়েন্ট সাইড ডিভাইসের সঙ্গে কাজ করার জন্য আদর্শ।