RESTful Web Services範例程式


讓我們使用Jersey框架開始編寫實際的RESTful web服務。 在開始使用Jersey框架編寫第一個例子,必須確保設定環境REST Web服務正常。我也假設你有一點點的使用Eclipse IDE工作的經驗。

因此,讓我們繼續編寫一個簡單的應用程式Jersey將公開一個Web服務方法來顯示使用者列表。

第1步 - 建立Java專案:

第一步是建立使用Eclipse IDE動態Web專案。按照選項 File -> New -> Project 並最後選擇 Dynamic Web Project 從嚮導列表向導。現在使用的嚮導視窗如下專案命名為UserManagement:

Dynamic Web Project Wizard

一旦專案成功建立,目錄結構在 Project Explorer:

Usermanagement Directories

第2步 - 新增必需的庫:

第二步,讓我們在專案中新增Jersey框架和它的依賴(庫)。複製所有jar檔案在下載ZIP的jersey檔案夾的目錄下面的所有檔案到專案的WEB-INF/ lib目錄下。

  • \jaxrs-ri-2.17\jaxrs-ri\api

  • \jaxrs-ri-2.17\jaxrs-ri\ext

  • \jaxrs-ri-2.17\jaxrs-ri\lib

現在,右鍵點選你的專案名稱使用者管理,然後按照下面選項中的上下文選單: Build Path -> Configure Build Path 顯示Java構建路徑視窗。

現在,使用新增JAR檔案可用按鈕下的庫索引標籤,新增JAR檔案到WEB-INF/lib目錄下。

第3步 - 建立原始檔:

現在,讓我們在UserManagement 專案中建立實際的原始檔。首先,我們需要建立一個名為包 com.yiibai. 要做到這一點,右鍵單擊src在包資源管理部分並按照選項: New -> Package.

下一步,我們將建立 User.java, UserDao.java, 和 UserService.java 檔案在 com.yiibai 包下.

File - User.java

package com.yiibai;

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;
   }		
}

File - UserDao.java

下面的程式已經被寫死為顯示列出來的使用者的功能。在這裡,可以實現所需的業務邏輯,你可能讀取使用者,或從資料庫及任何其他資源所需的資料。

package com.yiibai;

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<User> getAllUsers(){
      List<User> userList = null;
      try {
         File file = new File("Users.dat");
         if (!file.exists()) {
            User user = new User(1, "Mahesh", "Teacher");
            userList = new ArrayList<User>();
            userList.add(user);
            saveUserList(userList);		
         }
         else{
            FileInputStream fis = new FileInputStream(file);
            ObjectInputStream ois = new ObjectInputStream(fis);
            userList = (List<User>) ois.readObject();
            ois.close();
         }
      } catch (IOException e) {
         e.printStackTrace();
      } catch (ClassNotFoundException e) {
         e.printStackTrace();
      }		
      return userList;
   } 
}

File - UserService.java

package com.yiibai;

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<User> getUsers(){
      return userDao.getAllUsers();
   }	
}

有以下兩個要點需要注意下面的主程式,UserService.java:

  1. 第一步是指定用於使用@Path註釋到UserService的Web服務的路徑。

  2. 第二個步驟是,以指定用於使用@Path註釋到UserService的方法的特定web服務方法的路徑。

第4步 - 建立web.xml組態檔案:

需要建立一個Web XML組態檔案,該檔案是一個XML檔案,用於指定Jersey框架的servlet應用。

File - web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xmlns="http://java.sun.com/xml/ns/javaee" 
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
   id="WebApp_ID" version="3.0">
   <display-name>User Management</display-name>
   <servlet>
      <servlet-name>Jersey RESTful Application</servlet-name>
      <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
         <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>com.yiibai</param-value>
         </init-param>
      </servlet>
   <servlet-mapping>
   <servlet-name>Jersey RESTful Application</servlet-name>
      <url-pattern>/rest/*</url-pattern>
   </servlet-mapping>  
</web-app>

第5步 - 部署程式

一旦你使用建立源和Web組態檔案完成,這一步是準備好編譯和執行程式。要做到這一點,使用Eclipse,匯出您的應用程式為war檔案,並部署在Tomcat中。 要使用eclipse建立WAR檔案,按照選項 File -> export -> Web > War File 最後選擇專案UserManagement和目標檔案夾。 要在Tomcat部署WAR檔案,將使用者Management.war在Tomcat的安裝目錄 > webapps 目錄並啟動Tomcat。

第6步 - 執行程式

我們使用Postman,一個Chrome擴充套件來測試Web服務。

提出一個請求到UserManagement,讓所有的使用者列表。http://localhost:8080/UserManagement/rest/UserService/users POSTMAN使用GET請求,看看下面的結果。

RESTful API, All users

恭喜你,已經建立了第一個基於REST的應用成功。此外,讓我們開始做一些更有趣事情在接下來的幾章。