Download Document
Document related concepts
no text concepts found
Transcript
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 Parámetros de las url http://www.ejemplo.com/foo?p=1&q =neat ¿Cuáles son los parámetros de estas URLs? 16 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 Malo, no sigue estructura lógica /clientes/007/facturas/234 Bueno, jerarquía lógica Nivel 2: Entendimiento de HTTP Entender los métodos de HTTP Operación Descripción operación GET: Obtiene un valor. Puede ser un listado de representaciones de recursos POST 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 DELETE PUT PATCH 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