بخش های اصلی

وب سرویس RESTful

وب سرویس های RESTful – اولین برنامه

در این بخش با استفاده از فریم ورکِ Jersey، یک وب سرویسِ RESTful واقعی ایجاد خواهیم کرد. قبل از شروع به نوشتن اولین مثال با استفاده از فریم ورکِ Jersey، باید مطمئن بشین که محیطِ Jersey را به همان روشی که در بخشِ وب سرویس های RESRful – تنظیمِ محیط، گفتیم، تنظیم کرده این. همچنین، فرض می کنیم که با Eclipse IDE، کمی آشنایی دارین.

در ادامه شرع به نوشتن یک برنامه ی Jesrsey ساده می کنیم که یک متدِ وب سرویس را برای نمایش لیستی از کاربرها، اجرا می کنه.

مرحله ی 1 – ایجاد پروژه ی جاوا

اولین کاری که باید انجام بدین، ایجاد یک پروژه ی وبِ پویا، با استفاده از Eclipse IDE است. به مسیرِ File -> New -> Project برین و از wizard list، ویزاردِ Dynamic Web Project را انتخاب کنین. اکنون بصورت زیر، با استفاده از پنجره ی ویزارد، نام پروژه را UserManagement بذارین:

wizard eclipse jersey

زمانی که پروژه با موفقیت ایجاد شد، Project Explorerتان حاوی محتوایی مانند زیر خواهد بود:

usermanagement dir

مرحله ی 2 – اضافه کردن کتاب خانه های ضروری

در مرحله ی دوم، فریم ورکِ Jersey و وابسته های آن (کتاب خانه ها) را به پروژه اضافه می کنیم. از فولدر با پسوندِ ZIP مربوط به jersey دانلود شده، از پوشه ی WEB-INF/lib از پروژه، تمام فایل هایِ jar را از دایرکتوری های زیر، کپی کنین.

  • jaxrs-ri-2.17jaxrs-riapi
  • jaxrs-ri-2.17jaxrs-riext
  • jaxrs-ri-2.17jaxrs-rilib

اکنون روی نام پروژه، UserManagement، کلیک راست کنین و سپس برای نمایش پنجره ی Java Build Path، به مسیرِ زیر در منویِ context، برین:
Build Path -> Configure Build Path

اکنون برای اضافه کردن فایل هایِ JAR موجود در دایرکتوریِ WEB-INF/lib، از دکمه ی ADD JARS که زیر زبانه ی (tab) Libraries قرار گرفته، استفاده کنین.

مرحله ی 3 – ایجاد فایل های منبع (Source):

اکنون فایل های واقعیِ منبع (source) را در پروژه ی UserManagement، ایجاد می کنیم. ابتدا، باید پکیجی با نامِ com.softskill، ایجاد کنیم. برای این کار، در بخشِ package explorer، روی src کلیک راست کنین و به این مسیر برین: New -> Package.

سپس، فایل های UserService.java و User.java,UserDao.java را در پکیجِ com.softskill، ایجاد می کنیم.

User.java

package com.softskill;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "user")
public class User implements Serializable {

   private static final long serialVersionUID = 1L;
   private int id;
   private String name;
   private String profession;

   public User(){}
   
   public User(int id, String name, String profession){
      this.id = id;
      this.name = name;
      this.profession = profession;
   }

   public int getId() {
      return id;
   }

   @XmlElement
   public void setId(int id) {
      this.id = id;
   }
   public String getName() {
      return name;
   }
   @XmlElement
   public void setName(String name) {
      this.name = name;
   }
   public String getProfession() {
      return profession;
   }
   @XmlElement
   public void setProfession(String profession) {
      this.profession = profession;
   }		
}

UserDao.java

package com.softskill;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;

public class UserDao {
   public List getAllUsers(){
      List userList = null;
      try {
         File file = new File("Users.dat");
         if (!file.exists()) {
            User user = new User(1, "Mahesh", "Teacher");
            userList = new ArrayList();
            userList.add(user);
            saveUserList(userList);		
         }
         else{
            FileInputStream fis = new FileInputStream(file);
            ObjectInputStream ois = new ObjectInputStream(fis);
            userList = (List) ois.readObject();
            ois.close();
         }
      } catch (IOException e) {
         e.printStackTrace();
      } catch (ClassNotFoundException e) {
         e.printStackTrace();
      }		
      return userList;
   }

   private void saveUserList(List userList){
      try {
         File file = new File("Users.dat");
         FileOutputStream fos;

         fos = new FileOutputStream(file);

         ObjectOutputStream oos = new ObjectOutputStream(fos);
         oos.writeObject(userList);
         oos.close();
      } catch (FileNotFoundException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }   
}

UserService.java

package com.softskill;

import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/UserService")
public class UserService {

   UserDao userDao = new UserDao();

   @GET
   @Path("/users")
   @Produces(MediaType.APPLICATION_XML)
   public List getUsers(){
      return userDao.getAllUsers();
   }	
}

در ادامه دو نکته ی مهم آورده شده که باید راجع به برنامه ی اصلی، UserService.java، در نظر داشته باشین:

  1. اولین مرحله، تعیین مسیری برای وب سرویس با استفاده از @Path annotation برای UserService است.
  2. دومین مرحله، تعیین یک مسیر خاص برای متد وب سرویس خاصی، با استفاده از @Path annotation، برای متدِ UserService است.

مرحله ی 4 – ایجاد فایل پیکربندیِ Web.xml

باید یک فایل پیکربندی با نام Web.xml ایجاد کنیم، که یک فایلِ xml است و برای تعیین Jersey framework servlet، برای برنامه به کار میره.

web.xml



   User Management
   
      Jersey RESTful Application
      org.glassfish.jersey.servlet.ServletContainer
         
            jersey.config.server.provider.packages
            com.softskill
         
      
   
   Jersey RESTful Application
      /rest/*
     

مرحله ی 5 – استقرار برنامه

زمانی که کار ایجادِ منبع (source) و فایل های پیکربندیِ وب را به پایان رسانیدن، برای این مرحله که برنامه را کامپایل و اجرا خواهد کرد، آماده هستین. برای انجام این کار، از Eclipse استفاده کنین، از برنامه تان بصورت یک فایلِ war، خروجی بگیرین و آن را در Tomcat مستقر کنین. برای ایجادِ فایلِ WAR، با استفاده از eclipse، به این مسیر برین: File -> export -> Web > War File و در پایان پروژه ی UserManagement و فولدر مقصد را انتخاب کنین. برای استقرار فایلِ war در Tomcat، UserManagement.war را در پوشه های برنامه ی Tomcat Installation Directory >، قرار بدین و Tomcat را اجرا کنین.

مرحله ی 6 – اجرای برنامه

در این آموزش برای تست کردن وب سرویس ها از Postman و Chrome extension استفاده می کنیم.

از UserManagement درخواست کنین که لیستی از تمام کاربرها را بگیره. http://localhost:8080/UserManagement/rest/UserService/users را با درخواستِ GET، در POSTMAN قرار بدین و نتیجه ای بصورت زیر دریافت کنین.

restful postman

تبریک میگم، شما اولین برنامه ی RESTfulتان را با موفقیت ایجاد کردین.

در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

مبحث آموزشی

وب سرویس RESTful

RESTful Web Services

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد