sábado, 31 de octubre de 2015

RESTful Web Servicio

Hola contactos(as)

:) día de Halloween  y no tengo dulce... Esta vez dejo un trabajo de investigación que esta siendo muy utilizado por varias empresas de desarrollo de Software en Chile.  Los famosos servicio Web RESTful [1], que permiten de una manera sencilla interactuar entre sistemas independientes. Acá dejo la teoría bien explicada, clic aquiiiiii.  

En mi caso,  lo encuentro espectacular para prestar servicios a los clientes de una empresa.

Imagínense que podamos enviar la lectura del medidor (gas, agua o electricidad) 

a través de nuestro smartphone (teléfono Inteligente), no es mala idea. Hay empresas que realizan este servicio. (en España por ejemplo). En el 2013 se me ocurrió  este idea para mi tesis, pero posterior la cambié por otro tema. Bueno, que son los servicios RESTful  (están relacionado con la idea que comento),  es un modelo de diseño para sistemas distribuidos (asociado al protocolo http) donde puedes compartir los recursos entre aplicaciones  cliente y servidor (app móviles, excelente para diseñar todas tus ideas) a través de Xml, Json [2]y otros. Ojo, los servicios web RESTful son más ligeros que los utilizados por SOAP.

Solicitudes de servicio HTTP


Los Servicios web RESTful se implementan utilizando cuatro tipos de petición (HTTP)
  • PUT: Crea un recurso en el servidor. 
  • GET: Recupera un recurso del servidor. 
  • POST: Actualiza un recurso en el servidor. 
  • DELETE: Elimina un recurso en el servidor. 
Los servicios Web Restful lo puedes diseñar en .Net, php, java, y otros.  En mi caso me fui a Java.  

Figura 1: NetBeans

De la figura 1, debes tener instalado NetBeans y al iniciar un nuevo proyecto, sigue estos pasos:

-En Netbeans con Tomcat 7 en adelante.
-Al crear un nuevo proyecto, selecciona New Project... luego en categoría selecciona java Web y proyectos selecciona aplicación web. Ver figura 2.

Figura 2: Crear nuevo proyecto en netbeans

Luego Next y crea el proyecto en la ventana nombrada New Web Application. Incorpora el nombre del proyecto que desee. En mi caso, MiServicioRestFul.

Figura 3: crear nombre proyecto

Next y selecciona en Server Apache Tomcat que tengas instalado. Al instalar NetBeans te pregunta si desea utilizar  Tomcat. Te lo recomiendo, tengo varias aplicaciones corriendo en Tomcat y son muy estables y seguras.

Figura 4: Selecciona el servidor.

Luego Next y next y finalizas. Se creará el nuevo proyecto. Figura 5.

Figura 5: Proyecto creado.

Creada la aplicación web inicial, hay que incorporar este famoso servicio RESTful. Clic botón derecho en el proyecto,  selecciona New y Resful Web Services from Patterns... Figura 6.

Figura 6: Asociar al proyecto Servicio Web Restful.


Luego en la figura 7, debes crear un nombre en Resource Package, en mi caso incorporé Servicio. Se creará en la carpeta Servicio en donde se depositarán los archivos .java.


Figura 7: Crear la carpeta para los archivos .java


En la carpeta Servicio, anda al archivo GenericResource.java y vamos a crear un método que nos permita entender un pequeño ejemplo usando servicio Restful.

Figura 8: Clase GenericResource.

Incorpora las siguientes líneas en el archivo GenericResource.java:

    @Path("/lectura/{numeroMedidor}")

    @GET
    @Produces("text/xml")
    public String getUser(@PathParam("numeroMedidor") String numeroMedidor) {
      
        if (numeroMedidor.equals("10102020")) {
            String ls_resultado;
            ls_resultado="Lectura ACEPTADA";
            return ls_resultado;
         } else {
            return "Lectura NO ACEPTADA";
      }
    }

Debe quedar como se ve en la figura 9.

Figura 9: Creando método que permite recibir datos de otro sistema.

Al finalizar, ejecuta el proyecto Run Project.
El servicio Tomcat se activa y emerge desde el navegador la página JSP con la siguiente url, http://localhost:8084/MiServicioRestFul/

Ya estas listo para llamar a @Path("/lectura/{numeroMedidor}") desde una aplicación en html, o desde tu dispositivo Android o IOS. Para ello si hay que programar el programa.  

Veamos como funciona, utilizando el programa cURL [3] que es un programa que permite transferir archivos por medio de la sintaxis URL a través desde la línea de comando.

Si usas Windows, anda a inicio y en ejecutar escribe CMD y si usas MAC ejecuta la Terminal. 
En la figura 10, se presenta lo realizado.


Figura 10: comando curl.

Se pudo entonces, a través del programa curl, enviar una solicitud al Tomcat y este a través del servicio restful entregar el resultado por medio de GET.   El resultado entregado es Lectura ACEPTADA

Otro ejemplo, crea una página JSP, anda a Web Pages, clic botón derecho y New, selecciona  JSP... incorpora estas líneas de código:


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
 <script type='text/javascript'>
            function busca() {
                var http = new XMLHttpRequest();
                
     var url = "http://localhost:8084/MiServicioRestFul/webresources/generic/lectura/10102020"
                http.open("GET", url, true);
                http.onreadystatechange = function() {
                    if (http.readyState == 4 && http.status == 200) {
                        document.open();
                        document.write(http.responseText);
                    }
                };
                http.send();
            }
</script>


<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Prueba con JSP</title>
    </head>
    <body>
        
        <a href="javascript:busca()">Acepta</a>
        
    </body>
</html>

Graba y escribe lo siguiente en la URL de tu navegador:

http://localhost:8084/MiServicioRestFul/Prueba.jsp   (luego ENTER)

Figura 11: Prueba desde navegador.

Desde el navegador llamaremos al servicio y nos debe enviar el mismo resultado que entregó el programa CURL. Clic entonces en Acepta.

Se debe desplegar en tu navegador el mensaje Lectura ACEPTADA.

Conclusión

1.- Este servicio te permite implementar aplicaciones móviles, tanto en Android o IOS puedes llamar a un servicio RESTful por ejemplo con un servidor TOmCAT y obtener  o enviar datos a través  de una base de datos, imágenes, archivos, mapas, xml, etc.

2.-En tus aplicaciones WEB de tu empresa puedes incorporar esta arquitectura y así no tener código relevante en tus páginas (de php por ejemplo, acceso a base  de datos) que permitan ser utilizadas en forma maliciosa. 

3.- Con RestFul se puede diseñar la idea inicial que les comenté en el inicio de este artículo.

Espero que sirva y nos vemos con otro artículo la otra semana.. adiosito amigos míos... mucho grito en mi casa.. dulce o travesuras.... grgrgrgrgr


Bibliografía


[1] http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm

[2] http://www.w3schools.com/json/default.asp

[3] http://curl.haxx.se/docs/httpscripting.html
























































Enviar mensaje por Correo en forma secuencial

Hola estimados(as) Hoy les dejo un código en Java que permite enviar correos, usando una base de datos, por ejemplo Mysql. Lo que adjunto...