Struts 2 একটি শক্তিশালী Java-based web framework যা MVC (Model-View-Controller) আর্কিটেকচার অনুসরণ করে। আধুনিক ওয়েব অ্যাপ্লিকেশনগুলির মধ্যে REST (Representational State Transfer) একটি অত্যন্ত জনপ্রিয় স্টাইল যা HTTP প্রটোকল ব্যবহার করে স্টেটলেস ও কার্যকরী ইন্টারঅ্যাকশন প্রদান করে। Struts 2 এবং REST ইন্টিগ্রেশন এর মাধ্যমে, আপনি RESTful সার্ভিস এবং HTTP রিকোয়েস্ট হ্যান্ডলিং সহজে ম্যানেজ করতে পারবেন।
Struts 2 RESTful ওয়েব সার্ভিসে রিকোয়েস্ট এবং রেসপন্সের জন্য JSON, XML ইত্যাদি ফরম্যাট ব্যবহার করে। এটি সাধারণত Struts 2 REST Plugin ব্যবহার করে ইন্টিগ্রেট করা হয়।
১. Struts 2 এবং REST Integration এর জন্য প্রয়োজনীয় প্লাগইন
Struts 2-এ REST ইন্টিগ্রেশন করার জন্য Struts 2 REST Plugin ব্যবহার করা হয়। এটি RESTful Web Services তৈরি করতে এবং হ্যান্ডল করতে সাহায্য করে। Struts 2 REST Plugin সহ, আপনি HTTP রিকোয়েস্টগুলিকে GET, POST, PUT, DELETE ইত্যাদি HTTP মেথড অনুযায়ী হ্যান্ডল করতে পারেন এবং বিভিন্ন রেসপন্স ফরম্যাট (যেমন JSON, XML) প্রদান করতে পারেন।
Struts 2 REST Plugin ডিপেনডেন্সি (Maven)
Maven ব্যবহার করে Struts 2 REST Plugin ইনস্টল করার জন্য আপনাকে pom.xml ফাইলে নিম্নলিখিত ডিপেনডেন্সি যোগ করতে হবে:
<dependencies>
<!-- Struts 2 REST Plugin -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-rest-plugin</artifactId>
<version>2.5.22</version>
</dependency>
</dependencies>
এটি Struts 2 RESTful সার্ভিস ইন্টিগ্রেট করার জন্য প্রয়োজনীয় ডিপেনডেন্সি সরবরাহ করবে।
২. RESTful Service তৈরি করা
Struts 2-এ RESTful Service তৈরি করতে আপনাকে Action Class তৈরি করতে হবে, যা HTTP রিকোয়েস্টের উপর নির্ভর করে রেসপন্স প্রদান করবে। Struts 2 REST প্লাগইন ব্যবহার করে আপনি URL প্যাটার্নগুলিকে HTTP মেথডের সাথে ম্যাপ করতে পারেন।
উদাহরণ: Struts 2 REST Action Class
package com.example;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.rest.annotation.Default;
import org.apache.struts2.rest.annotation.Result;
import org.apache.struts2.rest.annotation.Action;
import java.util.HashMap;
import java.util.Map;
public class UserAction extends ActionSupport {
private Map<String, String> user = new HashMap<>();
private String id;
// Getter and Setter for id
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
// The REST action to get user data
@Action
@Result(type="json")
@Default
public String getUser() {
// Simulate fetching data
user.put("id", id);
user.put("name", "John Doe");
user.put("email", "johndoe@example.com");
return SUCCESS;
}
// Getter for the 'user' map
public Map<String, String> getUserData() {
return user;
}
}
ব্যাখ্যা:
- @Action: এটি Struts 2 RESTful একশন অ্যাট্রিবিউট যা HTTP রিকোয়েস্ট ম্যাপ করতে ব্যবহৃত হয়।
- @Result(type="json"): এটি রেসপন্স টাইপ কনফিগার করে। এখানে JSON রেসপন্স টাইপ ব্যবহার করা হয়েছে।
- @Default: এটি ডিফল্ট রিকোয়েস্ট মেথডকে চিহ্নিত করে, যা HTTP GET রিকোয়েস্ট হ্যান্ডল করবে।
এখানে, আমরা একটি UserAction ক্লাস তৈরি করেছি যা ইউজারের তথ্য GET রিকোয়েস্টে প্রদান করবে। রেসপন্স JSON ফরম্যাটে পাঠানো হবে।
৩. Struts 2 RESTful URL Mapping (struts.xml)
Struts 2-এ RESTful URL Mapping কনফিগার করার জন্য struts.xml ফাইলে URL প্যাটার্ন নির্ধারণ করা হয়।
উদাহরণ: struts.xml কনফিগারেশন
<struts>
<package name="default" namespace="/user" extends="struts-default">
<!-- RESTful Action Mapping -->
<action name="getUser/{id}" class="com.example.UserAction" method="getUser">
<result type="json"/>
</action>
</package>
</struts>
এখানে:
- namespace: এটি URL এর বেস পাথ।
- action name:
{id}স্ল্যাশ সহ URL প্যাটার্নের মধ্যে রিকোয়েস্ট প্যারামিটার হিসেবেidগ্রহণ করা হচ্ছে। - method: এই মেথডটি HTTP রিকোয়েস্ট হ্যান্ডল করবে।
৪. RESTful Web Service Access
এখন, আপনি GET রিকোয়েস্ট দিয়ে UserAction ক্লাসের তথ্য অ্যাক্সেস করতে পারবেন।
উদাহরণ: HTTP GET রিকোয়েস্ট
GET http://localhost:8080/your-app-name/user/getUser/123
এখানে:
- 123 হচ্ছে userId, যেটি struts.xml-এ {id} এর মাধ্যমে Action ক্লাসে পাঠানো হচ্ছে।
- Response: JSON ফরম্যাটে ইউজারের ডাটা যেমন
id,name, এবংemailপ্রদান করা হবে।
উদাহরণ: JSON রেসপন্স
{
"id": "123",
"name": "John Doe",
"email": "johndoe@example.com"
}
৫. HTTP Method Support (GET, POST, PUT, DELETE)
Struts 2 RESTful সাপোর্ট করে সমস্ত HTTP মেথড (GET, POST, PUT, DELETE) এবং আপনি এই মেথডগুলির উপর ভিত্তি করে নির্দিষ্ট রিকোয়েস্ট হ্যান্ডলিং এবং রেসপন্স কাস্টমাইজ করতে পারেন।
উদাহরণ: POST Method
@Action
@Result(type="json")
public String createUser() {
user.put("id", "124");
user.put("name", "Jane Doe");
user.put("email", "janedoe@example.com");
return SUCCESS;
}
এখানে, POST রিকোয়েস্টে একটি নতুন ইউজার তৈরি হবে এবং JSON রেসপন্স প্রদান করা হবে।
৬. Struts 2 REST Integration এর সুবিধা
- Easy to Use: Struts 2 REST ইন্টিগ্রেশন সহজ এবং স্বাভাবিকভাবে HTTP রিকোয়েস্ট মেথড (GET, POST, PUT, DELETE) সমর্থন করে।
- JSON and XML Support: Struts 2 REST JSON এবং XML রেসপন্স ফরম্যাট সাপোর্ট করে, যা বিভিন্ন ওয়েব এবং মোবাইল অ্যাপ্লিকেশনের জন্য আদর্শ।
- Interceptors: Struts 2 RESTful ওয়েব সার্ভিসে ইন্টারসেপ্টর ব্যবহার করে logging, security, validation ইত্যাদি কার্যক্রম যোগ করা যায়।
- Scalable: RESTful সেবা ব্যবহারে বৃহত্তর অ্যাপ্লিকেশন তৈরি করা সহজ, যা অন্যান্য অ্যাপ্লিকেশন এবং ডিভাইসের সাথে সহজে ইন্টিগ্রেট করা যায়।
সারাংশ
- Struts 2 এবং REST Integration সহজ এবং কার্যকরীভাবে RESTful Web Services তৈরি করতে সাহায্য করে।
- Struts 2 REST Plugin ব্যবহার করে আপনি GET, POST, PUT, DELETE HTTP মেথড সাপোর্ট করতে পারেন।
- struts.xml ফাইলের মাধ্যমে URL প্যাটার্ন এবং Action Mapping কনফিগার করা হয়।
- JSON এবং XML রেসপন্স ফরম্যাট সাপোর্ট করে এবং আপনি HTTP রিকোয়েস্টের মাধ্যমে ডাটা ফেরত পেতে পারেন।
Struts 2 এবং REST Integration আপনাকে শক্তিশালী এবং স্কেলেবল ওয়েব সেবা তৈরি করার সুযোগ দেয়, যা আধুনিক ওয়েব অ্যাপ্লিকেশন এবং মোবাইল অ্যাপ্লিকেশনের সাথে সহজে যোগাযোগ করতে সক্ষম।
REST API (Representational State Transfer Application Programming Interface) হল একটি স্টাইল বা আর্কিটেকচারাল প্যাটার্ন যা ওয়েব সেবা তৈরি করার জন্য ব্যবহৃত হয়। REST API হল HTTP প্রটোকলের উপর ভিত্তি করে নির্মিত একটি ওয়েব API, যা CRUD (Create, Read, Update, Delete) অপারেশন সম্পাদন করতে পারে। এটি সাধারণত একটি সিস্টেম বা অ্যাপ্লিকেশনকে অন্য সিস্টেমের সাথে যোগাযোগ করার জন্য ব্যবহৃত হয়।
Struts 2 ফ্রেমওয়ার্কে REST API তৈরি করা সম্ভব, যা অ্যাপ্লিকেশনকে একটি API হিসেবে ব্যবহৃত করার সুযোগ দেয়, যাতে অন্য অ্যাপ্লিকেশন বা ক্লায়েন্ট সিস্টেমের সাথে ইন্টারঅ্যাক্ট করা যায়। REST API মূলত অ্যাপ্লিকেশনগুলোকে মোবাইল অ্যাপ্লিকেশন, ক্লাউড সিস্টেম, এবং অন্যান্য সার্ভিসের সাথে ইন্টিগ্রেট করতে সাহায্য করে।
REST API কী?
REST একটি আর্কিটেকচারাল স্টাইল যা HTTP প্রটোকলের উপর ভিত্তি করে কাজ করে এবং এটি ওয়েব সেবা ডিজাইন এবং ডেভেলপমেন্টে সহায়তা করে। RESTful API সাধারণত ক্লায়েন্ট-সার্ভার আর্কিটেকচারে কাজ করে, যেখানে ক্লায়েন্ট একটি HTTP রিকোয়েস্ট পাঠায় এবং সার্ভার একটি রেসপন্স ফেরত দেয়।
REST API-এর কিছু মৌলিক বৈশিষ্ট্য:
- Stateless: প্রতিটি রিকোয়েস্টে সমস্ত তথ্য থাকতে হবে, সার্ভার কোনো তথ্য স্টোর করে রাখে না।
- Cacheable: রেসপন্স সঠিকভাবে কেচ করা যেতে পারে যাতে পরবর্তী রিকোয়েস্ট দ্রুত সাড়া দেয়।
- Client-Server: ক্লায়েন্ট এবং সার্ভারের মধ্যে সুনির্দিষ্ট যোগাযোগ হয়, যেখানে ক্লায়েন্টটি UI-র কাজ করে এবং সার্ভারটি ডেটা প্রসেস করে।
- Uniform Interface: একক এবং একরকম ইন্টারফেস ব্যবহার করা হয় যাতে ইন্টিগ্রেশন সহজ হয়।
REST API তে HTTP Methods ব্যবহৃত হয়, যেমন:
- GET: তথ্য গ্রহণ করতে ব্যবহৃত হয় (Read)
- POST: নতুন তথ্য তৈরি করতে ব্যবহৃত হয় (Create)
- PUT: বিদ্যমান তথ্য আপডেট করতে ব্যবহৃত হয় (Update)
- DELETE: তথ্য মুছতে ব্যবহৃত হয় (Delete)
Struts 2-এ REST API তৈরি করা
Struts 2 ফ্রেমওয়ার্কে REST API তৈরি করার জন্য, Struts 2 REST Plugin ব্যবহার করা হয়। এই প্লাগইনটি RESTful ওয়েব সেবার জন্য প্রয়োজনীয় রুটিং, HTTP মেথড এবং JSON বা XML রেসপন্স হ্যান্ডল করতে সহায়তা করে।
Struts 2 REST API তৈরি করতে নিচে কিছু পদক্ষেপ দেওয়া হলো:
1. Struts 2 REST Plugin ইনস্টল করা
প্রথমে, Struts 2 REST Plugin ইন্সটল করতে হয়। যদি আপনি Maven ব্যবহার করেন, তবে আপনার pom.xml ফাইলে নিচের ডিপেন্ডেন্সি যোগ করুন:
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-rest-plugin</artifactId>
<version>2.5.22</version> <!-- Use the latest version -->
</dependency>
2. struts.xml কনফিগারেশন
Struts 2 REST API কনফিগার করার জন্য struts.xml ফাইলে REST রুটিং কনফিগার করতে হবে।
<struts>
<package name="rest" extends="struts-default, struts-rest-default">
<action name="getUser/{id}" class="com.example.action.UserAction" method="getUser">
<result type="json"/>
</action>
</package>
</struts>
এখানে, getUser/{id} একটি RESTful URL প্যাটার্ন যা UserAction ক্লাসের getUser মেথড কল করবে। json রেসপন্স টাইপটি ব্যবহার করা হয়েছে, যাতে API JSON ফর্ম্যাটে রেসপন্স পাঠায়।
3. Action Class তৈরি করা
এখন আপনাকে একটি Action ক্লাস তৈরি করতে হবে যা RESTful মেথডকে হ্যান্ডল করবে। নিচে একটি উদাহরণ দেওয়া হল:
package com.example.action;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.rest.DefaultHttpHeaders;
import org.apache.struts2.rest.HttpHeaders;
public class UserAction extends ActionSupport {
private String id;
private String username;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
// Method to handle GET request
public HttpHeaders getUser() {
this.username = "John Doe"; // Sample user data
return new DefaultHttpHeaders("success").disableCaching();
}
}
এখানে, getUser() মেথডটি GET HTTP মেথডের জন্য ব্যবহার করা হচ্ছে। এটি একটি সিম্পল ইউজার ডেটা রিটার্ন করে।
4. JSON রেসপন্স হ্যান্ডলিং
Struts 2 REST API JSON রেসপন্স প্রেরণ করতে result type="json" ব্যবহার করে। এইভাবে, অ্যাকশন ক্লাস থেকে ফেরত আসা ডেটা স্বয়ংক্রিয়ভাবে JSON ফর্ম্যাটে কনভার্ট হয়ে যাবে।
5. REST API টেস্টিং
এখন আপনি Postman বা ব্রাউজারে এই API কল করতে পারেন।
API URL:
GET http://localhost:8080/your-app/rest/getUser/123
Response (JSON format):
{
"id": "123",
"username": "John Doe"
}
কেন REST API প্রয়োজন?
REST API অনেক কারণে জনপ্রিয় এবং প্রয়োজনীয়:
- Lightweight and Scalable: REST API সাধারণত খুবই লাইটওয়েট এবং এটি অত্যন্ত স্কেলেবল হয়, কারণ এটি HTTP প্রোটোকল ব্যবহার করে এবং খুব কম রিসোর্স খরচ করে।
- Platform Independence: RESTful API যেকোনো প্ল্যাটফর্ম বা প্রযুক্তিতে তৈরি করা যেতে পারে। এটি মোবাইল অ্যাপ্লিকেশন, ওয়েব অ্যাপ্লিকেশন এবং ডেস্কটপ অ্যাপ্লিকেশনগুলির মধ্যে ইন্টিগ্রেশন সহজ করে।
- Easy Integration: REST API অন্যান্য সিস্টেমের সাথে সহজে ইন্টিগ্রেট করা যায়। উদাহরণস্বরূপ, আপনি একটি REST API ব্যবহার করে আপনার Java অ্যাপ্লিকেশন এবং একটি মোবাইল অ্যাপ্লিকেশন একে অপরের সাথে যোগাযোগ করতে পারেন।
- JSON and XML Support: REST API সাধারণত JSON এবং XML ফর্ম্যাটে রেসপন্স পাঠায়, যা অধিকাংশ প্ল্যাটফর্ম এবং ক্লায়েন্ট সিস্টেম সহজেই পার্স করতে পারে।
- Stateless: REST API স্টেটলেস (stateless) হয়, অর্থাৎ সার্ভার কোনো ক্লায়েন্টের পূর্ববর্তী রিকোয়েস্ট সম্পর্কে কোনো তথ্য সংরক্ষণ করে না। এটি সিস্টেমকে দ্রুত এবং স্কেলেবল করে তোলে।
সারাংশ
REST API হল একটি গুরুত্বপূর্ণ উপাদান যা বিভিন্ন অ্যাপ্লিকেশন বা সিস্টেমের মধ্যে যোগাযোগের জন্য ব্যবহৃত হয়। Struts 2 ফ্রেমওয়ার্কে REST API তৈরি করা সম্ভব এবং এটি Struts 2 REST Plugin এর মাধ্যমে সহজেই কনফিগার করা যায়। RESTful অ্যাপ্লিকেশন তৈরি করার ফলে আপনি একটি লাইটওয়েট, প্ল্যাটফর্ম ইন্ডিপেন্ডেন্ট, এবং স্কেলেবল অ্যাপ্লিকেশন তৈরি করতে পারবেন যা অন্যান্য সিস্টেম বা অ্যাপ্লিকেশনগুলির সাথে যোগাযোগ করতে সক্ষম।
Struts 2 হল একটি শক্তিশালী MVC (Model-View-Controller) ফ্রেমওয়ার্ক যা ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যবহৃত হয়। এটি RESTful web services তৈরি করার জন্যও ব্যবহার করা যেতে পারে, যা HTTP প্রোটোকলের মাধ্যমে সিম্পল এবং সেলফ-ডেস্ক্রিপটিভ সার্ভিস অফার করে। Struts 2 তে REST API তৈরি করা অত্যন্ত সহজ এবং JSON বা XML ফর্ম্যাটে ডেটা আউটপুট দেয়।
RESTful API কী?
REST (Representational State Transfer) একটি স্টাইল আর্কিটেকচার যা HTTP প্রোটোকলের উপর ভিত্তি করে কাজ করে। REST API এর মাধ্যমে ক্লায়েন্ট ও সার্ভারের মধ্যে কমিউনিকেশন করা হয়, যেখানে সাধারণত HTTP মেথড যেমন GET, POST, PUT, DELETE ইত্যাদি ব্যবহৃত হয়।
Struts 2 তে REST API তৈরি করার জন্য ধাপ
- Maven Configuration
- Struts 2 REST Plugin
- Action Class Configuration
- struts.xml Configuration
- Testing the REST API
1. Maven Configuration
Struts 2 তে REST API তৈরির জন্য আপনাকে struts2-rest-plugin ব্যবহার করতে হবে। এটি Struts 2 অ্যাপ্লিকেশনে RESTful সেবা তৈরি করার জন্য প্রয়োজনীয় ফিচার এবং কনফিগারেশন সরবরাহ করে।
pom.xml ফাইলে নিম্নলিখিত ডিপেনডেন্সি যোগ করুন:
<dependencies>
<!-- Struts 2 Core Dependency -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.22</version> <!-- সর্বশেষ ভার্সন চেক করুন -->
</dependency>
<!-- Struts 2 REST Plugin Dependency -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-rest-plugin</artifactId>
<version>2.5.22</version> <!-- সর্বশেষ ভার্সন চেক করুন -->
</dependency>
<!-- Jackson Dependency for JSON -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.0</version>
</dependency>
</dependencies>
এখানে:
- struts2-rest-plugin ফ্রেমওয়ার্কটি RESTful API তৈরি করতে ব্যবহৃত হবে।
- jackson-databind JSON ডেটা প্রক্রিয়া করতে ব্যবহৃত হয়।
2. Struts 2 REST Plugin Configuration
Struts 2 REST Plugin এর মাধ্যমে API কল হ্যান্ডলিং এবং রেসপন্স পরিচালনা করা হয়। আপনাকে web.xml কনফিগারেশন ফাইলে RestFilter ফিল্টার যোগ করতে হবে।
web.xml কনফিগারেশন:
<filter>
<filter-name>rest</filter-name>
<filter-class>org.apache.struts2.rest.RestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>rest</filter-name>
<url-pattern>/rest/*</url-pattern>
</filter-mapping>
এখানে, RestFilter ফিল্টারটি REST API এর URL গুলি প্রসেস করার জন্য ব্যবহৃত হয়।
3. Action Class Configuration
Struts 2 তে REST API তৈরি করার জন্য Action ক্লাসে RESTful মেথডগুলি কনফিগার করতে হয়। এই অ্যাকশন ক্লাসে HTTP মেথডের সাথে সম্পর্কিত অ্যাকশন হ্যান্ডল করতে পারেন।
Action Class উদাহরণ:
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.rest.annotations.Result;
import org.apache.struts2.rest.annotations.Action;
import org.apache.struts2.rest.annotations.Rest;
import java.util.Arrays;
import java.util.List;
@Rest
public class UserAction extends ActionSupport {
private List<String> users;
@Action("getUsers")
@Result(type = "json")
public String getUsers() {
users = Arrays.asList("John", "Jane", "Alice", "Bob");
return SUCCESS;
}
// Getter and Setter for users
public List<String> getUsers() {
return users;
}
public void setUsers(List<String> users) {
this.users = users;
}
}
ব্যাখ্যা:
- @Rest: এই অ্যানোটেশনটি Action ক্লাসে ব্যবহৃত হয়, যা এটিকে REST API হিসাবে নির্দেশিত করে।
- @Action: HTTP মেথডের জন্য সংজ্ঞায়িত করা হয় (যেমন GET, POST, PUT)। এখানে
getUsersনামে একটি অ্যাকশন রয়েছে। - @Result: আউটপুট রেসপন্স হিসাবে JSON রেসপন্স টাইপ ব্যবহার করা হয়েছে।
4. struts.xml Configuration
Struts 2 এর struts.xml ফাইলে আপনার REST API অ্যাকশন কনফিগার করতে হবে। এখানে REST URL এবং রেসপন্স কনফিগার করা হয়।
struts.xml উদাহরণ:
<package name="rest" extends="struts-default">
<action name="getUsers" class="com.example.UserAction" method="getUsers">
<result type="json" />
</action>
</package>
ব্যাখ্যা:
- action ট্যাগের মধ্যে
nameহচ্ছে URL প্যাটার্ন যা REST API endpoint নির্দেশ করে।getUsersহলেhttp://localhost:8080/your-app/rest/getUsersহবে। - result ট্যাগটি json আউটপুট টাইপের জন্য কনফিগার করা হয়েছে।
5. Testing the REST API
Struts 2 REST API তৈরি করার পর, আপনি আপনার API পরীক্ষা করতে Postman বা Curl এর মাধ্যমে HTTP রিকোয়েস্ট পাঠাতে পারেন।
API Request Testing using Curl:
curl -X GET http://localhost:8080/your-app/rest/getUsers
Postman:
- Method: GET
- URL:
http://localhost:8080/your-app/rest/getUsers - Response: JSON response হবে, যেমন:
{
"users": ["John", "Jane", "Alice", "Bob"]
}
সারাংশ
Struts 2 তে RESTful API তৈরি করার জন্য struts2-rest-plugin ব্যবহার করা হয়, যা HTTP মেথডের মাধ্যমে রিকোয়েস্ট গ্রহণ এবং রেসপন্স প্রদান করতে সাহায্য করে। Action Class তে @Rest অ্যানোটেশন, @Action এবং @Result এর মাধ্যমে API কনফিগার করা যায়। Struts 2 তে JSON বা XML ফরম্যাটে ডেটা রিটার্ন করার জন্য সহজভাবে REST API তৈরি করা সম্ভব।
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 সার্ভিস তৈরি করার জন্য প্রয়োজনীয় টুলস সরবরাহ করে, যা আপনার অ্যাপ্লিকেশনের কাজের গতি বাড়ায় এবং মোবাইল অ্যাপ্লিকেশন বা অন্যান্য ক্লায়েন্ট সাইড ডিভাইসের সঙ্গে কাজ করার জন্য আদর্শ।
Read more