Serveis REST amb JAVA usant JAX-RS i Jersey

a

Exemple de com crear una API Java (JAX-RS) amb serveis REST usant Jersei amb Eclipse en un projecte MAVEN.

Requisits previs

Per completar aquest tutorial amb èxit és necessari tenir abans instal·lat Eclipse, el servidor Tomcat i tenir nocions bàsiques de Java.

Què és un servei REST?

REST són les sigles de rest. És una arquitectura de programari per a desenvolupar serveis web. Col·loquialment, un servei web serveix per fer una crida a una url (normalment HTTP) i obtenir dades de resposta de servidor (principalment en format JSON o XML).

En els últims anys els serveis web REST s’han establert com el model predominant a la web, desplaçant a altres arquitectures com SOAP.

JAX-RS i Jersey

JAX-RS és una API de Java per a serveis web REST que forma part de JAVA EE.

Jersei és un framework que simplifica encara més l’ús de JAX-RS estenent-la i donant-li més funcionalitats per als desenvolupadors.

Creació d’el projecte en Eclipse

El primer pas serà crear una aplicació anomenada ApiRest. En eclipsi anem a menú File > New > Dynamic Web Project. Després només escrivim el nom de el projecte com en la imatge i li donem a finalitzar.

Canvia el tipus de projecte a Maven

MAVEN serveix per gestionar les dependències de el projecte. Principalment servirà per registrar les llibreries externes que fa servir el projecte amb les seves respectives versions. Perquè eclipsi tracti el projecte com un projecte Maven, el convertirem. Per ens dirigim a la finestra de Project Explorer (si no ho tenim obert al menú Window > Show View > Project explorer), en la carpeta principal de el projecte li donem clic a el botó dret > Configureu > Convert to Maven Project. Ho deixem tal qual està en la imatge i premem finish.

Automàticament es crea un arxiu pom.xml a l’arrel de el projecte que és on manejarem les llibreries . Per a aquest exemple farem servir les llibreries asm.jar, jersei-bundle.jar, json.jar i jersei-server.jar. Per editar pom.xml podem clickar sobre de l’amb el botó dret > Open with > Text editor i enganxem aquest XML:

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>ApiRest</groupId> <artifactId>ApiRest</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.0.0</version> <configuration> <warSourceDirectory>WebContent</warSourceDirectory> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>asm</groupId> <artifactId>asm</artifactId> <version>3.3.1</version> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-bundle</artifactId> <version>1.19</version> </dependency> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20140107</version> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-server</artifactId> <version>1.19</version> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-core</artifactId> <version>1.19</version> </dependency> </dependencies></project>

Implementació d’un servei web

Fins ara tot el que hem fet ha estat per crear i configurar el projecte . Ara creem un servei REST que torni, per exemple, una llista d’usuaris. Però abans crearem un package on almazenar nostre codi. Per convenció se sol crear un anomenat com. A la carpeta ApiRest / Java Resources / src botó dret New > Package. Ara dins d’aquest package botó dret > New > Class. Se’ns obrirà una finestra i posem com a nom de la classe UsersService. Dins d’UsersService.java copiarem aquest codi:

123456789101112131415161718192021
package com;import java.util.ArrayList;import java.util.List;import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.Produces;import javax.ws.rs.core.Response;import org.json.JSONException;@Path("/users")public class UsersService { private static final long serialVersionUID = 1L; @GET @Produces("application/json") public Response getUsers() throws JSONException { List<User> users = new ArrayList<>(); users.add(new User("admin")); users.add(new User("john")); users.add(new User("usuario2")); return Response.status(200).entity(users.toString()).build(); }}

També crearem un POJO (Plain Old Java Object), una classe per definir l’usuari:

1234567891011121314151617181920212223
package com;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlRootElement;import org.json.JSONException;import org.json.JSONObject;@XmlRootElementpublic class User { @XmlElement(name = "username") String username; public User() { } public User(String username) { this.username = username; } @Override public String toString() { try { return new JSONObject().put("username", username).toString(); } catch (JSONException e) { return null; } }}

Compilar el projecte

Fem clic sobre el botó dret sobre el projecte i vam seleccionar Maven > Update Project. I li donem a Ok. Després una altra vegada el botó dret sobre la carpeta d’el projecte i li donem a Run as > Maven Build (l’opció número 5). En la finestra emergent que se’ns obre a la pestanya Main i el camp Goal escrivim clean install i després premem sobre Run.

Si tot ha anat bé hauries de veure un missatge d’èxit semblant a aquest:

1234567
 ------------------------------------------------------------------------ BUILD SUCCESS ------------------------------------------------------------------------ Total time: 10.046 s Finished at: 2016-12-28T17:35:36+01:00 Final Memory: 17M/132M ------------------------------------------------------------------------

Executar el projecte

Si ja tenim instal·lat i configurat el servidor Tomcat per eclipsi, podem anar a la pestanya de servers i en la instància de Tomcat Server at localhost premem el botó dret i seleccionem “Add and Remove …”

a la finestra que s’obre movem la nostra aplicació ApiRest de Disponible a configured i li donem a Finish.

Ara cal configurar un web.xml perquè el servidor tomcat. Crearem un arxiu web.xml dins de la carpeta WebContent / WEB – INF i copiarem el següent codi XML :

12345678910111213141516171819202122232425
<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>ApiRest</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>Jersey Web Application</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey Web Application</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping></web-app>

Per executar la instància de servidor premem sobre el botó dret de l’ Tomcat i li donem a start . A l’ cap d’uns moments ja podem obrir el navegador i visitar la url http://localhost:8080/ApiRest/users/ . Si tot ha anat bé hauríem de veure un JSON amb el següent contingut :

1234567891011

Com a resum l’estructura de directoris hauria de quedar així :

123456789
ApiRest/---- src/-------- com/------------ User.java------------ UsersService.java---- WebContent/--------WEB-INF/------------web.xml---- pom.xml

Prohibida la reproducció total o parcial d’aquest article sense el previ consentiment de Webtutoriales.com

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *