Servicios web RESTful - Primera aplicación

Comencemos a escribir los servicios web RESTful reales con Jersey Framework. Antes de comenzar a escribir su primer ejemplo utilizando Jersey Framework, debe asegurarse de haber configurado su entorno de Jersey correctamente como se explica en el capítulo Servicios web RESTful - Configuración del entorno . Aquí, también supongo que tiene un poco de conocimiento práctico de Eclipse IDE.

Entonces, procedamos a escribir una aplicación de Jersey simple que expondrá un método de servicio web para mostrar la lista de usuarios.

Crear un proyecto Java

El primer paso es crear un proyecto web dinámico utilizando Eclipse IDE. Sigue la opciónFile → New → Project y finalmente seleccione el Dynamic Web Projectasistente de la lista de asistentes. Ahora nombre su proyecto comoUserManagement usando la ventana del asistente como se muestra en la siguiente captura de pantalla:

Una vez que su proyecto se haya creado con éxito, tendrá el siguiente contenido en su Project Explorer -

Agregar las bibliotecas necesarias

Como segundo paso, agreguemos Jersey Framework y sus dependencias (bibliotecas) en nuestro proyecto. Copie todos los archivos jar de los siguientes directorios de la carpeta zip de descarga de jersey en el directorio WEB-INF / lib del proyecto.

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

Ahora, haga clic derecho en el nombre de su proyecto UserManagement y luego siga la opción disponible en el menú contextual - Build Path → Configure Build Path para mostrar la ventana Java Build Path.

Ahora usa Add JARs botón disponible debajo Libraries pestaña para agregar los archivos JAR presentes en el directorio WEBINF / lib.

Creando los archivos fuente

Ahora creemos los archivos fuente reales bajo el UserManagementproyecto. Primero necesitamos crear un paquete llamadocom.tutorialspoint. Para hacer esto, haga clic derecho en src en la sección del explorador de paquetes y siga la opción -New → Package.

A continuación crearemos UserService.java, User.java,UserDao.java archivos en el paquete 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(); 
   }  
}

Hay dos puntos importantes que deben tenerse en cuenta sobre el programa principal,

UserService.java

  • El primer paso es especificar una ruta para el servicio web usando la anotación @Path al UserService.

  • El segundo paso es especificar una ruta para el método de servicio web particular usando la anotación @Path al método de UserService.

Creación del archivo de configuración Web.xml

Debe crear un archivo de configuración Web xml, que es un archivo XML y se utiliza para especificar el servlet de marco de Jersey para nuestra aplicación.

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>

Implementar el programa

Una vez que haya terminado con la creación de archivos de configuración web y fuente, estará listo para este paso que consiste en compilar y ejecutar su programa. Para hacer esto, usando Eclipse, exporte su aplicación como un archivo war e impleméntelo en tomcat.

Para crear un archivo WAR usando eclipse, siga la opción File → export → Web → War Filey finalmente seleccione el proyecto UserManagement y la carpeta de destino. Para implementar un archivo war en Tomcat, coloque UserManagement.war en elTomcat Installation Directory → webapps directory e inicie el Tomcat.

Ejecutando el programa

Estamos usando Postman , una extensión de Chrome, para probar nuestros servicios web.

Haga una solicitud a UserManagement para obtener una lista de todos los usuarios. Coloque http: // localhost: 8080 / UserManagement / rest / UserService / users en POSTMAN con la solicitud GET y vea el siguiente resultado.

Felicitaciones, ha creado su primera aplicación RESTful con éxito.