RESTful Web Services - Ứng dụng đầu tiên

Hãy để chúng tôi bắt đầu viết các dịch vụ web RESTful thực tế với Jersey Framework. Trước khi bắt đầu viết ví dụ đầu tiên bằng cách sử dụng Jersey Framework, bạn phải đảm bảo rằng bạn đã thiết lập môi trường Jersey đúng cách như được giải thích trong chương RESTful Web Services - Environment Setup . Ở đây, tôi cũng giả định rằng bạn có một ít kiến ​​thức về Eclipse IDE.

Vì vậy, chúng ta hãy tiến hành viết một Ứng dụng Jersey đơn giản sẽ hiển thị một phương thức dịch vụ web để hiển thị danh sách người dùng.

Tạo một dự án Java

Bước đầu tiên là tạo một Dự án Web Động bằng Eclipse IDE. Làm theo tùy chọnFile → New → Project và cuối cùng chọn Dynamic Web Projectwizard từ danh sách wizard. Bây giờ đặt tên cho dự án của bạn làUserManagement bằng cách sử dụng cửa sổ thuật sĩ như được hiển thị trong ảnh chụp màn hình sau -

Khi dự án của bạn được tạo thành công, bạn sẽ có nội dung sau trong Project Explorer -

Thêm các thư viện bắt buộc

Bước thứ hai, chúng ta hãy thêm Jersey Framework và các phụ thuộc của nó (thư viện) vào dự án của chúng ta. Sao chép tất cả các lọ từ các thư mục sau của thư mục zip jersey tải xuống trong thư mục WEB-INF / lib của dự án.

  • \jaxrs-ri-2.17\jaxrs-ri\api
  • \jaxrs-ri-2.17\jaxrs-ri\ext
  • \jaxrs-ri-2.17\jaxrs-ri\lib

Bây giờ, nhấp chuột phải vào tên dự án của bạn UserManagement và sau đó làm theo tùy chọn có sẵn trong menu ngữ cảnh - Build Path → Configure Build Path để hiển thị cửa sổ Java Build Path.

Bây giờ sử dụng Add JARs nút có sẵn dưới Libraries để thêm các JAR có trong thư mục WEBINF / lib.

Tạo tệp nguồn

Bây giờ chúng ta hãy tạo các tệp nguồn thực sự trong UserManagementdự án. Đầu tiên, chúng ta cần tạo một gói có têncom.tutorialspoint. Để làm điều này, nhấp chuột phải vào src trong phần trình khám phá gói và làm theo tùy chọn -New → Package.

Tiếp theo chúng ta sẽ tạo UserService.java, User.java,UserDao.java các tệp trong gói com.tutorialspoint.

User.java

package com.tutorialspoint;  

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.tutorialspoint;  

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; 
   } 
   private void saveUserList(List<User> 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.tutorialspoint;  

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

Có hai điểm quan trọng cần lưu ý về chương trình chính,

UserService.java

  • Bước đầu tiên là chỉ định một đường dẫn cho dịch vụ web bằng cách sử dụng chú thích @Path tới UserService.

  • Bước thứ hai là chỉ định một đường dẫn cho phương thức dịch vụ web cụ thể bằng cách sử dụng chú thích @Path cho phương thức của UserService.

Tạo tệp cấu hình Web.xml

Bạn cần tạo tệp Cấu hình xml Web là tệp XML và được sử dụng để chỉ định servlet khung Jersey cho ứng dụng của chúng tôi.

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.tutorialspoint</param-value> 
      </init-param> 
   </servlet> 
   <servlet-mapping> 
      <servlet-name>Jersey RESTful Application</servlet-name> 
      <url-pattern>/rest/*</url-pattern> 
   </servlet-mapping>   
</web-app>

Triển khai chương trình

Khi bạn đã hoàn tất việc tạo các tệp nguồn và cấu hình web, bạn đã sẵn sàng cho bước biên dịch và chạy chương trình của bạn. Để thực hiện việc này, sử dụng Eclipse, xuất ứng dụng của bạn dưới dạng tệp chiến tranh và triển khai tương tự trong tomcat.

Để tạo tệp WAR bằng nhật thực, hãy làm theo tùy chọn File → export → Web → War Filevà cuối cùng chọn UserManagement của dự án và thư mục đích. Để triển khai tệp war trong Tomcat, hãy đặt UserManagement.war trongTomcat Installation Directory → webapps directory và khởi động Tomcat.

Chạy chương trình

Chúng tôi đang sử dụng Postman , một tiện ích mở rộng của Chrome, để kiểm tra các dịch vụ web của chúng tôi.

Yêu cầu UserManagement để nhận danh sách tất cả người dùng. Đưa http: // localhost: 8080 / UserManagement / rest / UserService / users vào POSTMAN với yêu cầu GET và xem kết quả sau.

Xin chúc mừng, bạn đã tạo thành công Ứng dụng RESTful đầu tiên của mình.