Servlet বনাম JAX-RS
ভার্বোস HttpServlet বয়লারপ্লেটের পরিবর্তে ডিক্লারেটিভ JAX-RS রিসোর্স ক্লাস ব্যবহার করুন।
@WebServlet("/users")
public class UserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req,
HttpServletResponse res)
throws ServletException, IOException {
String id = req.getParameter("id");
res.setContentType("application/json");
res.getWriter().write("{\"id\":\"" + id + "\"}");
}
}
@Path("/users")
public class UserResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getUser(
@QueryParam("id") String id) {
return Response.ok(new User(id)).build();
}
}
ডিক্লারেটিভ রাউটিং (Declarative Routing)
অ্যানোটেশনগুলো HTTP মেথড, পাথ এবং কন্টেন্ট টাইপ সংজ্ঞায়িত করে, ইম্পারেটিভ (imperative) if/else ডিসপ্যাচের পরিবর্তে।
স্বয়ংক্রিয় মার্শালিং (Automatic Marshalling)
POJOs সরাসরি রিটার্ন করুন; @Produces-এর উপর ভিত্তি করে রানটাইম সেগুলোকে স্বয়ংক্রিয়ভাবে JSON বা XML-এ সিরিয়ালাইজ করে।
সহজে টেস্টিং (Easier Testing)
রিসোর্স ক্লাসগুলো প্লেইন জাভা অবজেক্ট, যা সার্ভলেট কন্টেইনার ছাড়াই টেস্টিং করা যায়।
জাকার্তা EE 8 / Java 11 থেকে ব্যাপকভাবে উপলব্ধ৷
JAX-RS (Jakarta RESTful Web Services) আপনাকে @GET, @Path, এবং @Produces-এর মতো সহজ অ্যানোটেশন ব্যবহার করে REST এন্ডপয়েন্ট এক্সপোজ করতে দেয়। রিকোয়েস্ট প্যারামিটার ম্যানুয়ালি পার্স (parse) করা বা রেসপন্সে কন্টেন্ট টাইপ সেট করার আর প্রয়োজন নেই – রানটাইম স্বয়ংক্রিয়ভাবে মার্শালিং (marshalling) এবং রাউটিং (routing) হ্যান্ডেল করে।