Arquitectura del Software - – Tema 6 – REST: La Arquitectura de la
Transcripción
Arquitectura del Software - – Tema 6 – REST: La Arquitectura de la
La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Arquitectura del Software – Tema 6 – REST: La Arquitectura de la World Wide Web Sergio Saugar [email protected] 5o Ingeniería Informática Univ. Rey Juan Carlos Curso 2010-2011 Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Presentación Sergio Saugar Despacho: Departamental II, Desp. 232 Tutorías: Miércoles 11-13 y 17-21 Correo-e: [email protected] Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía REST: La Arquitectura de la World Wide Web 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseño de Aplicaciones RESTful 6 Ejemplo: Correo Interno de Facebook 7 Lecturas recomendadas 8 Enlaces Recomendados Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía REST: La Arquitectura de la World Wide Web 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseño de Aplicaciones RESTful 6 Ejemplo: Correo Interno de Facebook 7 Lecturas recomendadas 8 Enlaces Recomendados Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía REST: La Arquitectura de la World Wide Web 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseño de Aplicaciones RESTful 6 Ejemplo: Correo Interno de Facebook 7 Lecturas recomendadas 8 Enlaces Recomendados Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía REST: La Arquitectura de la World Wide Web 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseño de Aplicaciones RESTful 6 Ejemplo: Correo Interno de Facebook 7 Lecturas recomendadas 8 Enlaces Recomendados Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía REST: La Arquitectura de la World Wide Web 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseño de Aplicaciones RESTful 6 Ejemplo: Correo Interno de Facebook 7 Lecturas recomendadas 8 Enlaces Recomendados Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía REST: La Arquitectura de la World Wide Web 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseño de Aplicaciones RESTful 6 Ejemplo: Correo Interno de Facebook 7 Lecturas recomendadas 8 Enlaces Recomendados Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía REST: La Arquitectura de la World Wide Web 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseño de Aplicaciones RESTful 6 Ejemplo: Correo Interno de Facebook 7 Lecturas recomendadas 8 Enlaces Recomendados Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía REST: La Arquitectura de la World Wide Web 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseño de Aplicaciones RESTful 6 Ejemplo: Correo Interno de Facebook 7 Lecturas recomendadas 8 Enlaces Recomendados Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful Índice 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseño de Aplicaciones RESTful 6 Ejemplo: Correo Interno de Facebook 7 Lecturas recomendadas 8 Enlaces Recomendados Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web ¿Qué es la Web? “The World Wide Web (WWW, or simply Web) is an information space in which the items of interest, referred to as resources, are identified by global identifiers called Uniform Resource Identifiers (URI).” (W3C) Fue creada en 1989 por Tim Berners-Lee y Robert Cailliau El 30 Abril de 1993, el CERN abre la red Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Tecnologías que la conforman ¿Cuáles son las principales tecnologías que conforman la Web? URI, HTTP, HTML (MIME types) Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Punto de vista actual Tim Berners Lee (“Luminaries look to the future web”, BBC News, 30 April 2008): “15 years will seem to be just the infancy of the web” “To look back on the web after 15 years is in fact wrong. We have to get a foothold on this 15 years and look forward” Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Punto de vista actual Tim Berners Lee (“Luminaries look to the future web”, BBC News, 30 April 2008): “What’s exciting is that people are building new social systems, new systems of review, new systems of governance. My hope is that those will produce... new ways of working together effectively and fairly which we can use globally to manage ourselves as a planet” Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Punto de vista actual (cont.) Leonard Richardson (Canonical Ltd.) y Sam Ruby (IBM Emerging Technologies) [Richardson and Ruby(2007)]: “An amazing new technology, it promises to radically change the way we write distributed systems” Sin embargo: No es una nueva tecnología Desde un punto de vista técnico es más bien simple (HTTP, URI, HTML) Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Punto de vista actual (cont.) Pero: Ha cambiado la forma en la que interaccionamos y hacemos las cosas Ofreciéndonos una plataforma simple, ubícua que puede ser explotada para construir sistemas distribuidos De hecho existen 285 millones de sitios web en todo el mundo (Netcraft - Febrero 2011) Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Declaraciones en WWW2009 (Abril 2009) Tim Berners Lee (HTML, HTTP, URL): “(...)lo que más le sorprendió de la criatura fue, sobre todo, la capacidad de la gente para adoptar esta tecnología, cuando al principio era algo muy ’geek’.” Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Declaraciones en WWW2009 (Abril 2009) Vinton Cerf (TCP/IP): “La prominencia de los nombres de dominio, que convirtió a Internet en una herramienta publicitaria de primer orden, una gran e inesperada función de la Red” “(...) la posibilidad de ordenar e ’indexar’ tanta información, tal y como hace Google, que lo hizo bien” “(...) la capacidad de dar a la gente la posibilidad de crear y generar valor” “(...) es necesario desarrollar una red más sencilla, con más información y aplicaciones y más accesible a toda la población” Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Declaraciones en WWW2009 (Abril 2009) Robert Cailliau (HTML): “(...) lo que más me sorprende es que Google pueda seguir creciendo aún, su escalabilidad.” Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Servicios Web ¿Porqué aparecieron los servicios Web? Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Servicios Web ¿Qué es un Servicio Web? – W3C – “A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards.” Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Servicios Web ¿Qué es un Servicio Web? – Webopedia – “The term Web services describes a standardized way of integrating Web-based applications using the XML, SOAP, WSDL and UDDI open standards over an Internet protocol backbone. XML is used to tag the data, SOAP is used to transfer the data, WSDL is used for describing the services available and UDDI is used for listing what services are available. Used primarily as a means for businesses to communicate with each other and with clients, Web services allow organizations to communicate data without intimate knowledge of each other’s IT systems behind the firewall.” Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Servicios Web ¿Qué es un Servicio Web? – Webopedia – (cont.) “Unlike traditional client/server models, such as a Web server/Web page system, Web services do not provide the user with a GUI. Web services instead share business logic, data and processes through a programmatic interface across a network. The applications interface, not the users. Developers can then add the Web service to a GUI (such as a Web page or an executable program) to offer specific functionality to users.” Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Servicios Web ¿Qué es un Servicio Web? – Webopedia – (cont.) “Web services allow different applications from different sources to communicate with each other without time-consuming custom coding, and because all communication is in XML, Web services are not tied to any one operating system or programming language. For example, Java can talk with Perl, Windows applications can talk with UNIX applications. Web services do not require the use of browsers or HTML. ” Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Servicios Web: Invocación de un servicio metereológico POST / W e a t h e r F o r e c a s t . asmx HTTP/ 1 . 1 H o s t : www . w e b s e r v i c e x . n e t C o n t e n t−T y p e : t e x t / xml ; c h a r s e t=u t f −8 SOAPAction: " h t t p : //www . w e b s e r v i c e x . n e t / GetWeatherByPlaceName " <? x m l v e r s i o n=" 1 . 0 " e n c o d i n g=" u t f −8" ?> <s o a p : E n v e l o p e x m l n s : x s i=" h t t p : //www . w3 . o r g /2 0 01 / XMLSchema−i n s t a n c e " x m l n s : x s d=" h t t p : //www . w3 . o r g /2 0 01 / XMLSchema" x m l n s : s o a p=" h t t p : // s c h e m a s . x m l s o a p . o r g / s o a p / e n v e l o p e / "> <s o a p : H e a d> <u s e r I D>0 10 2 4 3</ u s e r I D> < t r a n s a c t i o n I D>0 2 3 9 4 8 0 0 2 3 1</ t r a n s a c t i o n I D> </ s o a p : H e a d> <s o a p : B o d y> <GetWeatherByPlaceName x m l n s=" h t t p : //www . w e b s e r v i c e x . n e t "> <PlaceName>L a s V e g a s</ PlaceName> </ GetWeatherByPlaceName> </ s o a p : B o d y> </ s o a p : E n v e l o p e> Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Integración de Servicios Web en la Web El problema surge cuando intentamos ofrecer servicios (aplicaciones) a través de la Web: No utilizamos la web correctamente La mayoría de los “servicios web” actuales no tienen nada que ver con la web! Mientras que la Web se caracteriza por su simplicidad, los nuevos “servicios web” tienen una arquitectura (muy pesada) para el acceso a objetos distribuidos remotos (similar a COM o CORBA) Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Integración de Servicios Web en la Web (cont.) El problema surge cuando intentamos ofrecer servicios (aplicaciones) a través de la Web: Las arquitecturas de “servicios web” actuales, reinventan o ignoran las características que, precisamente, han hecho que la Web sea un éxito[Richardson and Ruby(2007)] Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Integración de Servicios Web en la Web (cont.) “Debilidades” de los Servicios Web actuales: [Pautasso(2007)]: Complejidad elevada (SOAP, WSDL, UDDI, WS-*) o, por lo menos, esa es la impresión Proceso de estandarización problemático: Luchas internas Carencia de coherencia arquitectónica Fragmentación Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Integración de Servicios Web en la Web (cont.) “Debilidades” de los Servicios Web actuales: [Pautasso(2007)]: Proceso de estandarización problemático (cont.): Estandarización de los estándares (WS-I, Web Services Interoperability Organization). Encargado de desarrollar diversos perfiles para definir de manera más exhaustiva estos estándares. Falta de implementaciones de referencia ¿Vuelta otra vez a los errores de CORBA? Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Pila de protocolos WS Fuente:The Web Services Protocol Stack (Lawrence Wilkes) Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Nueva aproximación: Porqué no utilizar la Web tal y como fue concebida. Esas características han hecho que la Web sea lo que es actualmente. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Nueva aproximación (cont.): Es decir, las mismas características que hacen: Que una web sea fácil de usar por un navegador también hacen que la API de un servicio web sea fácil de usar por un programador Que un sitio web pueda escalar hasta límites increibles (considerad el motor de búsquedas Google) también hacen que los servicios web puedan ser escalables Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Nueva aproximación (cont.): Qué principios sustentan la Web? Para guiar el diseño y desarrollo de la Web moderna, se utilizó el estilo arquitectónico REST REpresentational State Transfer (REST) Un estilo arquitectónico que define recursos identificables, y métodos para acceder y manipular el estado de dichos recursos. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Nueva aproximación (cont.): Entonces, ajustemos todos los servicios Web de forma que respeten la arquitectura de la Web y se aprovechen de sus ventajas Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Conclusiones: Las “debilidades” de los servicios Web actuales son relativas y subjetivas Por el momento no existe consenso, y por el contrario, hay mucho debate Aunque parece que hay movimientos (RESTful Services): El 85 % de los clientes prefieren la API RESTful de Amazona Google dejó de atender su API SOAP (03/2009) para centrarse en su API REST (más fácil de usar) Aunque no todo lo que se define como RESTful API lo es (flickr, ...) a Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Definición Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Algunas APIs de servicios: http://code.google.com/intl/es/apis/gdata/docs/2.0/basics.html http://www.opensocial.org/Technical-Resources/opensocial-spec-v09/REST-API.html https://apiwiki.twitter.com/Twitter-API-Documentation http://developers.facebook.com/docs/reference/rest/ http://delicious.com/help/api http://developer.ebay.com/developercenter/rest http://www.flickr.com/services/api/ Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Introducción Recursos Principios Básicos y Características Índice 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseño de Aplicaciones RESTful 6 Ejemplo: Correo Interno de Facebook 7 Lecturas recomendadas 8 Enlaces Recomendados Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Introducción Recursos Principios Básicos y Características Representational State Transfer Definido por Roy Fielding en su tesis doctoral [Fielding(2000)] REST es un estilo arquitectónico para sistemas hipermedia distribuidos Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Introducción Recursos Principios Básicos y Características Representational State Transfer Se concebió como un modelo arquitectónico que explicaba cómo debería funcionar la Web Framework guía para el desarrollo de los protocolos estándar de la Web Identificar problemas existentes, comparar soluciones alternativas, asegurar que las extensiones de los protocolos no violan las restricciones que han hecho exitosa la Web. Captura todos los aspectos que cubren los requisitos de comportamiento y rendimiento de la Web Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Introducción Recursos Principios Básicos y Características Representational State Transfer Este estilo intenta evocar una imagen de cómo se comporta una aplicación hipermedia distribuida bien diseñada: Una red de recursos (estados de una máquina virtual) El usuario va progresando a través de la aplicación seleccionando enlaces (transiciones de estados) El resultado de estas transiciones es otro recurso (el siguiente estado de la aplicación) Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Introducción Recursos Principios Básicos y Características Representational State Transfer Entidades arquitectónicas Elementos de datos: Recurso, identificador de recurso, Representación Todos los elementos de datos son accedidos a través de un único interfaz estandarizado Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Introducción Recursos Principios Básicos y Características Representational State Transfer Entidades arquitectónicas Conectores: Client, Server, Cache, Resolver, Tunnel Proveen interfaces genéricos para acceder y manipular el conjunto de valores de un recurso Todas las llamadas realizadas sobre los conectores deben ser autocontenidas. Toda la información necesaria para entender la solicitud se encuentra en la misma petición, no se depende de peticiones pasadas (stateless). Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Introducción Recursos Principios Básicos y Características Representational State Transfer Entidades arquitectónicas Componentes: Origin server, Gateway, Proxy, user agent Los componentes se comunican transfiriéndose representaciones de recursos a través de su interfaz. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Introducción Recursos Principios Básicos y Características Representational State Transfer – Recursos Recursos Es la abstracción clave de ésta arquitectura Se define como: “any information that can be named can be a resource: a document, an image, a temporal service, a collection of other resources...)” Cada recurso tiene un identificador único Todo los recursos comparten un interfaz homogéneo común Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Introducción Recursos Principios Básicos y Características Representational State Transfer – Recursos Recursos (cont.) Un recurso puede tener distintas representaciones (denominadas variantes) Un recurso es un mapeado conceptual entre un identificador y un conjunto de representaciones Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Introducción Recursos Principios Básicos y Características Representational State Transfer – Recursos Recursos (cont.) Lo único que se requiere que sea estático en un recurso es la semántica del mapeo, ya que ésta semántica es la que distingue un recurso de otro Por ejemplo: “la última versión” del software X es un mapeo que puede ir variando con el tiempo, sin embargo, “la versión 1.5” de dicho software es un mapeo estático. Ambos son recursos distintos aunque en un momento dado, pueden apuntar al mismo sitio. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Introducción Recursos Principios Básicos y Características Representational State Transfer – Recursos Recursos (cont.) Los recursos están desvinculados de las implementaciones concretas de los recursos: Los clientes solo tratan con representaciones Cambios en las implementaciones no afectan a los clientes Las variantes de las representaciones de un recurso se negocian en las peticiones sobre el mismo Los clientes pueden elegir la representación más adecuada Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Introducción Recursos Principios Básicos y Características Representational State Transfer – Representaciones Manejando Representaciones Una respuesta exitosa contiene la representación actual del estado del recurso identificado Algunas representaciones contienen enlaces a los siguientes estados potenciales de la aplicación HTML, XML, RDF, ...: Los formatos normalmente utilizados para describir las representaciones son los descritos por MIME Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Introducción Recursos Principios Básicos y Características Representational State Transfer – Principios Básicos Principios Básicos El estilo arquitectónico REST se rige por los siguientes principios básicos: Un recurso es cualquier cosa que tenga identidad y debe estar identificado mediante algún mecanismo El identificador de un recurso no expone detalles acerca de su implementación Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Introducción Recursos Principios Básicos y Características Representational State Transfer – Principios Básicos Principios Básicos Todos los recursos deben compartir la misma interfaz uniforme. Los métodos definidos en esta interfaz debe ser utilizados acorde a la semántica que se les impuso al crearlos. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Introducción Recursos Principios Básicos y Características Representational State Transfer – Principios Básicos Principios Básicos El formato de las representaciones debe estar documentado y ser estándar. Las representaciones deben incluir enlaces a otros recursos relacionados (“hypermedia as the engine of application state” ¡¡HATEOAS!!) La comunicación debe ser autocontenida (stateless) Estos principios permiten, entre otras cosas, definir un sistema por capas Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Introducción Recursos Principios Básicos y Características Representational State Transfer – Características Las características provistas por una arquitectura REST son: Sencillez Escalabilidad: estado en el cliente... Rendimiento: sistema por capas... Evolucionabilidad: interfaz inmutable, hateoas... Visibilidad: URI Bajo acoplamiento: entre cliente/servidor (interfaz)... Características que por otra parte, también son deseables para cualquier middleware distribuído Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Introducción Recursos Principios Básicos y Características Representational State Transfer – Características Rest hace énfasis en: Escalabilidad en las interacciones entre componentes (cantidad de clientes y servidores) Generalidad en las interfaces (cualquier cliente HTTP puede hablar con cualquier servidor sin configuración previa) Despliegue independiente de componentes (clientes y servidores de cualquier tiempo interactúan) Componentes intermedios para: reducir la latencia de la interacción (caché), reforzar la seguridad (firewalls), permitir la adaptación entre diferentes tecnologías (gateways)... Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Introducción Recursos Principios Básicos y Características Estilo Arquitectónico REST Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso Índice 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseño de Aplicaciones RESTful 6 Ejemplo: Correo Interno de Facebook 7 Lecturas recomendadas 8 Enlaces Recomendados Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso El Protocolo HTTP Breve Repaso HTTP es un protocolo cliente-servidor Un cliente envía un mensaje de petición a un servidor, el cuál, después de realizar algún tipo de procesamiento, devuelve un mensaje de respuesta que contiene un codigo de estado y el resultado de la petición (o información acerca del código de estado) Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso El Protocolo HTTP Breve Repaso El mensaje de petición contiene: una línea de petición, cero o más líneas con cabeceras, y, opcionalmente, el cuerpo del mensaje Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso El Protocolo HTTP Línea de Petición Consta de tres partes separadas por espacios: el nombre del método, la ruta local del recurso solicitado (Request-URI), y la versión de HTTP utilizada. METHOD /path/to/resource HTTP/1.1 Header: value ... Message-Body Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso El Protocolo HTTP Métodos HTTP La semántica de la petición recae en el método HTTP elegido: GET: Obtiene la representación de un recurso identificado en la Request-URI. Puede ser parametrizado para restringir la representación solicitada Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso El Protocolo HTTP Métodos HTTP (cont.) POST: Este método es utilizado para crear nuevos recursos y para añadir datos a un recurso ya creado. Cuando el método es utilizado para crear recursos, el cuerpo del mensaje de petición contiene la entidad a crear. Ésta entidad será creada por el recurso identificado en la Request-URI y la decisión acerca de la nueva URL del nuevo recurso se deja al servidor Si el método es utilizado para añadir nueva información, el cuerpo de la petición contiene los datos que deben ser añadidos o procesados por el recurso identificado por la Request-URI Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso El Protocolo HTTP Métodos HTTP (cont.) PUT: Éste método es utilizado para crear un nuevo recurso o para actualizar un recurso existente. El cuerpo del mensaje codifica la entidad que va a ser publicada. Si la Request-URI apunta a una entidad existente, entonces el cuerpo del mensaje encapsula una actualización del mismo (completa o parcial). En caso contrario, se crea un recurso cuya URL será la Request-URI. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso El Protocolo HTTP Métodos HTTP (cont.) DELETE: Éste método desvincula un recurso de la Request-URI especificada. Notad que éste método no implica el borrado de los datos actuales mantenidos por el recurso o el componente software que lo represente. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso El Protocolo HTTP Cabeceras HTTP define 47 cabeceras Éstas cabeceras añaden meta-información adicional acerca del cuerpo del mensaje o, si éste no está presente, acerca del recurso identificado en la petición. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso El Protocolo HTTP Cabeceras (cont.) Algunas cabeceras relevantes: Authorization: contiene credenciales de autorización que el cliente ha codificado mediante algún esquema acordado. El servidor decodifica las credenciales y decide si debe llevar a cabo la petición (o no) Host: El host objetivo de la petición Location: Define la localización de un recurso creado recientemente Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso El Protocolo HTTP Cabeceras (cont.) Referer: Cuando se solicita una URI, esta cabecera identifica la URL del recurso que ha “referenciado” esta petición a esta URI. WWW-Authenticate: Esta cabecera se utiliza cuando el servidor requiere del cliente algún tipo de autenticación. Esta cabecera debe contener al menos un desafio de autenticación que pueda ser aplicable a la solicitud realizada. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso El Protocolo HTTP GET /private/resource HTTP/1.0 Host: localhost Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso HTTP/1.0 401 Authorization Required Server: Apache... Date: Sat, 27 Nov 2004 10:18:15 GMT WWW-Authenticate: Basic realm="Secure Area" Content-Type: text/html Content-Length: ... Message Body Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso GET /private/resource HTTP/1.0 Host: localhost Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso El Protocolo HTTP Mensaje de Respuesta Los mensajes de respuesta a peticiones HTTP se componen un código de estado (Status-Code), algunas cabeceras y un cuerpo del mensaje. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso El Protocolo HTTP Códigos de Estado El código de estado está compuesto por 3 dígitos Representa el resultado del intento realizado por el servidor para entender y satisfacer la petición del cliente. El primer dígito del código de estado define el tipo de respuesta 1xx 2xx 3xx 4xx 5xx informational, success, redirection, client error, server error Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso El Protocolo HTTP Códigos de Estado Algunos Códigos de Estado: 200 (“OK”): Todo ha ido bien. 201 (“Created”): El servidor envia este código cuando creó un nuevo recurso como consecuencia de una petición del cliente. La cabecera Location se suele utilizar junto con este código de estado para identificar la URI del nuevo recurso. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso El Protocolo HTTP Códigos de Estado (cont.) 202 (“Accepted”): La solicitud es aceptada pero no puede ser atendida en tiempo real. Será procesada más tarde. La cabecera Location se utiliza junto con éste código de error para proveer la URI de un recurso “monitor”. 204 (“No Content”): La solicitud fue procesada correctamente pero el servidor declina enviar cualquier mensaje acerca del estado o cualquier representación. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso El Protocolo HTTP Códigos de Estado (cont.) 400 (“Bad Request”): Este es el código genérico de error en el cliente. Normalmente, se utiliza cuando la petición no ha podido ser procesada incluso estando bien formada. 401 (“Unauthorized”): El cliente no tiene las credenciales de autenticación adecuadas para utilizar el recurso. La cabecera WWW-Authenticate utilizada junto con esta respuesta, contiene al menos un desafío de autenticación que se aplica al recurso solicitado. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso El Protocolo HTTP Códigos de Estado (cont.) 403 (“Forbidden”): La solicitud del cliente está bien formada pero el servidor rechaza procesarla. La razón está relacionada no con credenciales de autenticación sino con la lógica de la aplicación. Debería incluir una explicación de la razón del rechazo. 405 (“Method Not Allowed”): El método no es soportado por el recurso. La respuesta debe incluir una cabecera Allow que contenga los métodos válidos para el recurso solicitado. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso El Protocolo HTTP Códigos de Estado (cont.) 406 (“Not Acceptable”): El cliente ha solicitado solicitado una representación no disponible. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Breve Repaso Cuerpo del mensaje El cuerpo de los mensajes de respuesta puede contener una pequeña descripción textual del código de estado devuelto. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Ventajas Fallos Comunes al Definir Sistemas RESTful Índice 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseño de Aplicaciones RESTful 6 Ejemplo: Correo Interno de Facebook 7 Lecturas recomendadas 8 Enlaces Recomendados Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Ventajas Fallos Comunes al Definir Sistemas RESTful Aplicando REST a la Web Identificadores de Recursos URI: identificadores para todos los recursos Direccionamiento universal Fácil enlazado entre recursos La semántica del mapeo URI-Recurso no debería cambiar, aunque la representación del recurso pueda hacerlo: Se suele dar importancia al uso de URIs “útiles”: http://maps.google.com/maps?f=q&hl=es &geocode=&q=madrid&ie=UTF8&ll=40.453217,-3.703766 &spn=0.462925,1.2854&z=10&iwloc=addr http://maps.google.com/europe/spain/madrid Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Ventajas Fallos Comunes al Definir Sistemas RESTful Aplicando REST a la Web HTTP como interfaz homogéneo Utilización de los métodos HTTP para definir operaciones sobre recursos: Interfaz simple y homogéneo para todos los recursos: POST: Crea un nuevo recurso GET: Recupera la representación de un recurso (idempotente) PUT: Actualiza un recurso (o crea uno nuevo en la URI indicada) DELETE: Elimina un recurso Se asocian con CRUD (Create, Retrieve, Update and Delete) Recordad, todas las interacciones debe ser stateless Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Ventajas Fallos Comunes al Definir Sistemas RESTful Aplicando REST a la Web Ventajas: [Pautasso(2007)] Sencillez El interfaz uniforme es inmutable (evitando que los clientes fallen) HTTP/POX es ubícuo Interacciones stateless/sincronas Escalabilidad Demostrada caching, estructura por capas (redirecciones, filtering...), granjas de servidores (clusters)... Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Ventajas Fallos Comunes al Definir Sistemas RESTful Aplicando REST a la Web Ventajas (cont.) Se percibe como fácil de adoptar (dada su ligera infraestructura) Unifica los sitios Web y los servicios Web en aplicaciones Web consistentes Mejora el rendimiento de casi todas las aplicaciones Web 2.0 Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Ventajas Fallos Comunes al Definir Sistemas RESTful Aplicando REST a la Web Fallos comunes: [Prescod(2002)] Pensar que HTTP no es suficiente Sobrecargar POST (en vez de utilizar DELETE, GET o PUT) Hacer que las URIs reflejen la estructura interna de la aplicación (en vez de vínculos semánticos) Colocar acciones en las URIs Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Ventajas Fallos Comunes al Definir Sistemas RESTful Aplicando REST a la Web Fallos Comunes (cont.) Uso de sesiones en el servidor Inventarse identificadores propios para los recursos Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Índice 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseño de Aplicaciones RESTful 6 Ejemplo: Correo Interno de Facebook 7 Lecturas recomendadas 8 Enlaces Recomendados Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Diseño de Aplicaciones RESTful Identificar Recursos ¿Cuáles son las entidades de mi sistema? ¿Qué identificador (URI) van a tener? Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Diseño de Aplicaciones RESTful Seleccionar Representaciones ¿Qué representaciones van a proveer mis recursos? ¿Cómo voy a ofrecer enlaces a otros recursos dentro de ellas? Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Diseño de Aplicaciones RESTful Definir Interfaz: Métodos, Códigos de estado ¿Qué operaciones soportan mis recursos? ¿Qué códigos de estado devolverán dichas operaciones? Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Identificando los recursos Seleccionando la Representación Definiendo la Interfaz Índice 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseño de Aplicaciones RESTful 6 Ejemplo: Correo Interno de Facebook 7 Lecturas recomendadas 8 Enlaces Recomendados Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Identificando los recursos Seleccionando la Representación Definiendo la Interfaz Ejemplo: Correo Interno de Facebook ¿Cómo funciona?¿Cómo funciona algún webmail que conozcáis? Facebook afirma tener una API REST... Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Identificando los recursos Seleccionando la Representación Definiendo la Interfaz Ejemplo: Correo Interno de Facebook Algunas URIs reales de Facebook Usuario: http://www.facebook.com/home.php? Amigos: http://www.facebook.com/home.php?#/friends/?ref=tn URIs amigos: http://www.facebook.com/profile.php?id=15611341243 Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Identificando los recursos Seleccionando la Representación Definiendo la Interfaz Ejemplo: Correo Interno de Facebook Algunas URIs reales Mailbox: http://www.facebook.com/home.php?#/inbox/?ref=mb Email: http://www.facebook.com/inbox/readmessage. php?t=11331121389745&mbox_pos=0 Marcar como no leído: http://www.facebook.com/inbox/readmessage.php?t= 1133123424489745&f=0&mbox_pos=0&mu Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Identificando los recursos Seleccionando la Representación Definiendo la Interfaz Ejemplo: Correo Interno de Facebook ¿Cómo creéis que debería funciona? Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Identificando los recursos Seleccionando la Representación Definiendo la Interfaz Ejemplo: Correo Interno de Facebook Identificando los recursos Recordad: las aplicaciones deben dividirse en recurso (nombres), no en servicios (verbos) Como entidades podríamos tener: usuarios, mailbox de un usuario, folders de correo y mensajes Folders del sistema: recibidos, enviados, borrador Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Identificando los recursos Seleccionando la Representación Definiendo la Interfaz Ejemplo: Correo Interno de Facebook Asignando las URIs Una posible alternativa: http://www.facebook.com/users/{userId}/mail/{folderId}/{mailId} Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Identificando los recursos Seleccionando la Representación Definiendo la Interfaz Ejemplo: Correo Interno de Facebook Seleccionando la Representación Por ejemplo: XHTML y XML XHTML para browsers (quizá junto con JSON...) XML para otras aplicaciones Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Identificando los recursos Seleccionando la Representación Definiendo la Interfaz Ejemplo: Correo Interno de Facebook Definiendo la Interfaz Pensad cómo: Crear un mensaje en un folder del usuario? Borrar un mensaje de cualquier folder? Enviar un nuevo mail a otro usuario? Modificar un mensaje como “borrador”? Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Identificando los recursos Seleccionando la Representación Definiendo la Interfaz Ejemplo: Correo Interno de Facebook Diagrama de estados de la aplicación (incompleto) Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Identificando los recursos Seleccionando la Representación Definiendo la Interfaz Ejemplo: Correo Interno de Facebook Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Identificando los recursos Seleccionando la Representación Definiendo la Interfaz Ejemplo: Correo Interno de Facebook Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Identificando los recursos Seleccionando la Representación Definiendo la Interfaz Ejemplo: Correo Interno de Facebook También hay que pensar en las las respuestas los métodos: Utilizando los códigos de estado y las cabeceras auxiliares Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Identificando los recursos Seleccionando la Representación Definiendo la Interfaz Ejemplo: Correo Interno de Facebook Mailbox http://www.facebook.com/users/{userId}/mail/ Metodo GET Contenido Lista de folders Repres. XML, HTML POST Representación del Folder XML, HTML PUT n/a DELETE n/a Sergio Saugar Acción Devuelve una lista de los folders definidos por el usuario {userId} Crea un folder de correo con nombre determinado Arquitectura del Software Codigo 200 - OK, 406 Not Acceptable 201 - Created + Location, 403 Forbidden 405 - Method Not Allowed 405 - Method Not Allowed La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Identificando los recursos Seleccionando la Representación Definiendo la Interfaz Ejemplo: Correo Interno de Facebook Folder http://www.facebook.com/users/{userId}/mail/{folderId}/ Metodo GET Contenido Lista mensajes Repres. XML, HTML POST Mensaje XML, HTML PUT n/a Acción Devuelve una lista de los mensajes contenidos en el folder {folderId} Si {folderId} es “Enviados” se envía el mensaje al usuario indicado en el campo destinatario. Se crea mensaje en enviados Codigo 200 - OK, 406 - Not Acceptable 201 - Created + Location, 403 - Forbidden 405 - Method Not Allowed 200 - OK, 403 - Forbidden DELETE Sergio Saugar Elimina el folder {folderId} del usuario {userId} sólo si fue creado por el usuario y no tiene mensajes. Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Identificando los recursos Seleccionando la Representación Definiendo la Interfaz Ejemplo: Correo Interno de Facebook eMail http://www.facebook.com/users/{userId}/mail/{folderId}/{mailId} Metodo GET Contenido Representacion del correo POST n/a PUT Representacion del correo Repres. XML, HTML Acción Devuelve una representación del correo {mailId} XML,HTML Actualiza el correo, sólo si es borrador Elimina el correo {mailId} de la carpeta {folderId} del usuario {userId} DELETE Sergio Saugar Arquitectura del Software Codigo 200 - OK, 406 Not Acceptable 405 - Method Not Allowed 200 - OK, 400 Bad Request 200 - OK, 403 Forbidden La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Resumen El estado y la funcionalidad de la aplicación está dividida entre los recursos Cada recurso es identificado globalmente utilizando una sintaxis universal para enlaces hipermedia Todos los recursos comparten un interfaz común para la transferencia de estado entre los clientes y los recursos. Esta interfaz está formada por : Un conjunto restringido de operaciones bien definidas (HTTP) Un conjunto restringido de tipos de contenido (MIME) Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Resumen En definitiva una arquitectura: Basada en cliente/servidor Stateless Cacheable Layered Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Índice 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseño de Aplicaciones RESTful 6 Ejemplo: Correo Interno de Facebook 7 Lecturas recomendadas 8 Enlaces Recomendados Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Reinventing Email using REST http://prescod.net/rest/restmail/ RESTify Day Trader http://bitworking.org/news/201/RESTify-DayTrader A RESTful Web Service, an example (Delicious API) http: //www.peej.co.uk/articles/restfully-delicious.html How to GET a Cup of Coffe http://www.infoq.com/articles/webber-rest-workflow Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Putting the Web into Web Services http://steve.vinoski.net/pdf/IEEE-Web_Services_ Interaction_Models_Part_2.pdf RESTful Web Services Development Checklist http://steve.vinoski.net/pdf/IEEE-RESTful_Web_ Services_Development_Checklist.pdf Roots of the REST/SOAP Debate http://www.prescod.net/rest/rest_vs_soap_overview Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Índice 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseño de Aplicaciones RESTful 6 Ejemplo: Correo Interno de Facebook 7 Lecturas recomendadas 8 Enlaces Recomendados Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Untangled, musings of Roy T. Fielding http://roy.gbiv.com/untangled/ Steve Vinoski’s Blog – Internet Computing Columns http://steve.vinoski.net/blog/ internet-computing-columns/ InfoQ: Tracking change and innovation in the enterprise software development community http://www.infoq.com/ Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía ¿¿ PREGUNTAS ?? Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía R. T. Fielding. Architectural styles and the design of network-based software architectures. PhD thesis, University of California, 2000. C. Pautasso. Soap vs. rest - bringing the web back into web services. http://www.iks.inf.ethz.ch/education/ss07/ws_soa/ slides/SOAPvsREST_ETH.pdf, 2007. (link revised on February 2011). Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía P. Prescod. Common rest mistakes. http://www.prescod.net/rest/mistakes/, 2002. (link revised on February 2011). L. Richardson and S. Ruby. RESTful Web Services. O’Reilly, May 2007. ISBN 0596529260. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseño de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografía Arquitectura del Software – Tema 6 – REST: La Arquitectura de la World Wide Web Sergio Saugar [email protected] 5o Ingeniería Informática Univ. Rey Juan Carlos Curso 2010-2011 Sergio Saugar Arquitectura del Software