Desarrollo y servicios web Luisa Fernanda Rincón Pérez 2016-1
Qué haremos hoy? 1. Qué son los servicios RESTful? 2. Cuál es la diferencia entre un servicio RESTful y un servicio SOAP? 3. Cómo exponer un servicio RESTful en Java?
Qué es REST? Principios arquitectónicos que resumen cómo los recursos son definidos y tomados para sistemas hipermedias distribuidos tales como HTTP El término fue introducido en la tesis doctoral de Roy Fielding en 2000, quien es uno de los principales autores de la especificación de HTTP. Opera sobre recursos Todos lo servicios REST comparten una forma de invocación y métodos uniforme utilizando los métodos de HTTP GET,POST,PUT,DELETE. No requieren ninguna capa adicional
Qué es REST hoy? La palabra REST se usa en un sentido más amplio para describir cualquier interfaz web simple que utiliza XML/JSON y HTTP sin las abstracciones adicionales de otros protocolos como SOAP Hoy se usa comunmente para crear APIs para abplicaciones basadas en la WEB. Los servicios web basados en la arquitectura REST se llaman servicios RESTful
Cuáles son sus principios básicos? Todo es un recurso Cada recurso tiene un identificador único Usa los métodos estándares del protocolo http Un recurso puede tener múltiples representaciones: ejm XML, JSON Las comunicaciones son stateless por lo que no hay persistencia en las transacciones Separa la representación del recurso del recurso mismo Es escalable pues no es necesario preocuparse por el estado.
Cómo se ve una petición a un servicio REST? http://www.adwe.es/general/colaboraciones/servicios-web-restful-con-http-parte-iintroduccion-y-bases-teoricas
Cuál es la diferencia entre SOAP y REST?
Cuál es la diferencia entre SOAP y REST? En arquitecturas REST, los servicios no publican un conjunto arbitrario de métodos u operaciones. Por ejemplo, en REST no se publicará una interfaz con métodos addempleado, removeempleado Rest accede a la representación de recursos. Por ejemplo un recurso puede ser representado en html, json, xml, etc. Todos lo recursos comparten las mismas operaciones. Actualmente estas operaciones se apoyan en el protocolo http ( put, get, post,delete)
Cómo se ven las operaciones un servicio SOAP y en un servicio RESTful?
Probar servicio web Rest http://resttesttest.com/
Algunos servicios REST para probar http://api.bogotacomovamos.org/datasets
Reglas para exponer APIs REST
Nivel 1: Uso correcto de URIs
Para qué sirve una URi? El recurso es la información a la que queremos acceder o que queremos modificar o borrar, independientemente de su formato. Las URL, son un tipo de URI, Uniform Resource Identifier, que además de permitir identificar de forma única el recurso, nos permite localizarlo para poder acceder a él o compartir su ubicación. {protocolo}://{dominio o hostname}[:puerto (opcional)]/{ruta del recurso}?{consulta de filtrado}
Cómo se estructura una URL? http://localhost:8080/ serviciosweb/main.html Protocolo host: puerto (Defecto puerto 80) Path y nombre del archivo Otras URL de ejemplo ftp://www.ftp.org/docs/test.txt mailto:user@test101.com Objetivo: asignar una dirección única a cada uno de los recursos disponibles en Internet, como por ejemplo textos, imágenes, vídeos, etc. 15
16 Parámetros de las url http://www.ejemplo.com/foo?p=1&q =neat Cuáles son los parámetros de estas URLs?
Codificación URL Se codifican siguiendo el RFC 1738:... Only alphanumeric [0-9a-zA-Z], the special characters $-_.+!*'() and reserved characters used for their reserved purposes may be used unencoded within an URL. Los demás caracteres se codifican de acuerdo a: %[reemplazar un caracter por su código ASCII en formato hexadecimal - El espacio se codifica con el número 32, que en hexadecimal es 20, entonces la URL del espacio es %20 El espacio puede también ser codificado como + 17
Ejemplos de URL INVÁLIDA Debería ser:?q=c%23+.net+4.0 http://www.google.bg/search?&q=c#.net 4.0
Cuáles son las reglás básicas para ponerle un nombre a la URI? Los nombres de URI no deben implicar una acción, por lo tanto debe evitarse usar verbos en ellos. Deben ser únicas, no debemos tener más de una URI para identificar un mismo recurso. Deben ser independiente de formato. Deben mantener una jerarquía lógica. Los filtrados de información de un recurso no se hacen en la URI.
/facturas/234/editar /facturas/234 /facturas/234.pdf /facturas/234 Malo, tiene una acción Bueno, es la misma url sin importar la acción Malo, asociado al formato Bueno, es la misma url sin importar el formato /facturas/234/cliente/007 /clientes/007/facturas/234 Malo, no sigue estructura lógica Bueno, jerarquía lógica
Nivel 2: Entendimiento de HTTP
Entender los métodos de HTTP Operación GET: POST DELETE PUT PATCH Descripción operación Obtiene un valor. Puede ser un listado de representaciones de recursos Guarda una nueva representación de un recurso instanciada por una identidad Elimina un recurso que cumple con una identidad Actualiza un recurso que cumple con una identidad Edita partes concretas de un recurso
Usar correctamente los códigos de estado Código 200 Código 400 Código 404 Código 501 Etc Usar el código de errores que viene predefinido en html http://www.restapitutorial.com/httpstatuscodes.html
Detalle de los códigos HTTP Tomado de: http://www.restapitutorial.com/httpstatuscodes.html
Nivel 3: Entender la arquitectura para exponer la API
Arquitectura APIs REST Manejo de Recursos y de datos NO se preocupa por HTML o JS Peticiones y respuestas JSON-XML JSON-XML Cliente UI Sólo sabe leer y pintar datos en pantalla NO sabe acceder a BD Cliente WEB App Móvil API REST JSON-XML Otra API REST
Qué se requiere desde el servidor para exponer las APIs REST desde el servidor? Ruteador para general las URL de los recursos Gestión de peticiónes y respuestas Manejo de código de errores Renderizado de respuestas con JSON -XML
Ejemplos
Qué se requiere desde el servidor para consumir las APIs REST desde el cliente? Ejemplos Consumo vía Ajax
Qué ventajas tiene? Independencia de cómo desarrollar el sistema en cuanto a las tecnologías Se debe desarrollar sólo un backend que se consume con vía http Se puede hacer despliegue distribuido
Exponer servicio web REST en java
Java Edición Empresarial JEE
JAVA
Qué es un servidor de aplicaciones?
Qué servidores de aplicaciones existen?
Apache Tomcat El servidor Tomcat ha sido desarrollado por "Apache Software Foundation" http://apache.org/. Descargar el zip de este sitio http://tomcat.apache.org/ Descomprimir carpeta en el disco C
Cambiar el puerto del tomcat En config/servlet.xml cambiar el port en esta parte por 8090 Subir el servidor. En la carpeta donde este bin/startup.bat
Si el servidor esta arriba debe aparecer
Qué errores se pueden presentar?
Cómo se configura el server en un IDE?
Cómo se configura el server en un IDE?
El despliegue de las aplicaciones JAR Java Archive Archivo que permite ejecutar aplicacion es escritas en el lenguaje Java. Uso: Librerías, utilidades WAR Web Archive Comprime la aplicación web para que sea desplegad a en un contenedo r de servlets EAR Entreprise Archive Comprime la aplicación web para que sea desplegad a en un contenedo r de servlets
Qué otros errores pueden pasar?
Tutorial de referencia http://crunchify.com/how-to-buildrestful-service-with-java-using-jax-rs-andjersey/
Cómo se ve el consumo del servicio JSON?
Cómo se ve el consumo del servicio XML?
Referencias Exponer servicio web RestFul. Java http://crunchify.com/how-to-build-restfulservice-with-java-using-jax-rs-and-jersey/ Servicios REST -.net http://www.asp.net/web-api/overview/gettingstarted-with-aspnet-web-api/tutorial-your-firstweb-api Video de explicación sobre API rest https://www.youtube.com/watch?v=g8_vvbx6 eqa