Bueno, hace poco que estaba estudiando y revisando el tema de estos servicios, quisiera compartir este tutorial para reafirmar lo aprendido... Bueno, sin mas por decir vamos a explicarlo.
No me gusta hablar mucho de teoría en estos tutoriales así que seré breve. Crearemos un ejemplo sencillo de un servicio Rest. Para esto usaremos maven, tomcat y eclipse. Sera un simple saludo pero nos ayudara a entender su funcionamiento.
Lo que me agrada de estos servicios es que así como los servicios web basados en SOAP se cuelgan sobre HTTP para realizar peticiones, los servicios REST también lo hacen, pero lo hacen de la manera mas natural, tan transparente que es suficiente con realizar un GET o POST (PUT, DELETE etc..), esta vez si debemos respetar el significado de cada método del protocolo HTTP.
La ventaja de los REST sobre los SOAP es que ya no nos vamos a preocupar por generar los clientes para invocar los servicios, son mucho mas transparentes y eso nos permite interactuar con otros sistemas de forma mas simple, finalmente la mayoría de los demás lenguajes de programación ya tienen en su core algún API para realizar peticiones HTTP.
Comencemos por crear un proyecto Maven con naturaleza Web con la estructura estándar y dependencias.
Recuerda que para convertir tu proyecto Web de Maven en un proyecto eclipse, debes de aplicar el siguiente comando sobre el pom.xml:
mvn eclipse:eclipse -Dwtpversion=2.0
La estructura que tenemos en nuestro eclipse es la siguiente:
Ya esta, ahora vamos a necesitar unas dependencias del proyecto de Jersey, estas dependencias contienen las classes necesarias que necesitará nuestro proyecto.
Existen diversas implementaciones de la especificación JAX-RS (Restful Web Services), una de ellas es la de Jersey y que es la mas común y la que necesitamos.
Nuestro pom.xml queda así:
Ahora que ya tenemos nuestro proyecto, es hora de codificar...
Nuestro servicio hará lo siguiente, haremos una petición a un servicio y nos regresara la misma información en diferentes formatos (xml, texto y json). La respuesta del servicio dependerá de la url que invoquemos.
La url seria de la siguiente forma:
/mirecurso/text
/mirecurso/json
/mirecurso/xml
Un servicio se hace referencia mediante una URI o un identificador único de un recurso en el servidor, para nuestro caso será de la siguiente manera:
http://localhost:8090/TestRestful
Y la gran ventaja es que es muy simple de implementar, tanto como hacer un GET sobre la url que vemos arriba.
Bueno, ahora en nuestro eclipse, vamos a crear una clase que maneje las peticiones, nuestra clase se llamará:
MessageResources.java, que es un simple POJO y le agregaremos un par de anotaciones.
Como vemos, nuestra clase esta anotada con @Path, el cual hace match con la url que deseamos invocar.
Teniendo esa clase escrita, vamos a implementar los métodos que van a manejar los diferentes formatos del servicio y que será la salida del mismo:
Ya casi terminamos, como ultimo paso, configuraremos el web.xml para indicarle a Jersey que cualquier petición que inicie con /* será parte de la invocación de nuestro servicio. Es simple, es como configurar cualquier servlet que intercepta las peticiones.
Nuestro web.xml quedaría de la siguiente forma.
Eso es todo, cuando el contenedor del Tomcat inicie detectará las clases anotadas con @Path y las considerará como parte de la URI de nuestro servicio.
Compruébalo haciendo un GET sobre las siguientes URL's.
http://localhost:8090/TestRestful/mirecurso/xml
http://localhost:8090/TestRestful/mirecurso/json
http://localhost:8090/TestRestful/mirecurso/text
Anexo un screen de la salida de mi prueba local. Espero les haya ayudado a crear su primer servicio Rest.
Nos vemos en el siguiente tutorial.
Saludos.
Hola! Qué tal!
ResponderEliminarAnte todo, muchas gracias por el instructivo, me ha servido mucho!
Lo único que te quería comentar, es que además de esas librerías que mencionás, tuve que agregar jersey-bundle.jar y asm.jar
Quizá esto sucede porque no uso Maven, pero en fin... Para quien no use Maven dejo aclarado esto y constato que el instructivo funciona perfectamente...
Desde ya, muchas gracias!
Saludos, Hernán!
Hola, muy buen tuto, me gustaría que me ayudaras con un proyecto que tengo, podrías?
ResponderEliminarGracias
vvvv
ResponderEliminar