El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Arquitectura del Software Tema 6 REST: La Arquitectura de la World Wide Web Sergio Saugar sergio.saugar@urjc.es 5 o Ingeniera Informtica 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Presentacin Sergio Saugar Despacho: Departamental II, Desp. 232 Tutoras: Mircoles 11-13 y 17-21 Correo-e: sergio.saugar@urjc.es Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa 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 Diseo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa 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 Diseo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa 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 Diseo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa 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 Diseo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa 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 Diseo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa 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 Diseo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa 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 Diseo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa 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 Diseo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin 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 Diseo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin 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 identied by global identiers called Uniform Resource Identiers (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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Tecnologas que la conforman Cules son las principales tecnologas 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin 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): Whats 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 eectively 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin 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 tecnologa Desde un punto de vista tcnico es ms 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin 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 Ofrecindonos una plataforma simple, ubcua 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin 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 ms le sorprendi de la criatura fue, sobre todo, la capacidad de la gente para adoptar esta tecnologa, 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin 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 funcin de la Red (...) la posibilidad de ordenar e indexar tanta informacin, 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 ms sencilla, con ms informacin y aplicaciones y ms accesible a toda la poblacin Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin 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 ms me sorprende es que Google pueda seguir creciendo an, su escalabilidad. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin 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 (specically 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin 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 others IT systems behind the rewall. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin 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 oer specic functionality to users. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin 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 dierent applications from dierent 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Servicios Web: Invocacin de un servicio metereolgico POST / Weat her For ecas t . asmx HTTP/1. 1 Hos t : www. we bs e r v i c e x . net ContentType: t e x t /xml ; c ha r s e t=ut f 8 SOAPActi on: " h t t p : //www. we bs e r v i c e x . net /GetWeatherByPl aceName" <? xml v e r s i o n=" 1. 0 " encodi ng=" ut f 8"?> <s oap: Enve l ope x ml n s : x s i =" h t t p : //www. w3 . or g /2001/XMLSchemai n s t a n c e " x ml ns : x s d=" h t t p : //www. w3 . or g /2001/XMLSchema" xml ns : s oap=" h t t p : // schemas . xml soap . or g / soap / e nve l ope /"> <soap: Head> <us er I D>010243</ us er I D> <t r a n s a c t i o n I D>02394800231</ t r a n s a c t i o n I D> </ soap: Head> <soap: Body> <GetWeatherByPl aceName xml ns=" h t t p : //www. we bs e r v i c e x . net "> <Pl aceName>Las Vegas</Pl aceName> </GetWeatherByPl aceName> </ soap: Body> </ s oap: Enve l ope> Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Integracin de Servicios Web en la Web El problema surge cuando intentamos ofrecer servicios (aplicaciones) a travs de la Web: No utilizamos la web correctamente La mayora 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Integracin de Servicios Web en la Web (cont.) El problema surge cuando intentamos ofrecer servicios (aplicaciones) a travs de la Web: Las arquitecturas de servicios web actuales, reinventan o ignoran las caractersticas 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Integracin 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 impresin Proceso de estandarizacin problemtico: Luchas internas Carencia de coherencia arquitectnica Fragmentacin Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Integracin de Servicios Web en la Web (cont.) Debilidades de los Servicios Web actuales: [Pautasso(2007)]: Proceso de estandarizacin problemtico (cont.): Estandarizacin de los estndares (WS-I, Web Services Interoperability Organization). Encargado de desarrollar diversos perles para denir de manera ms exhaustiva estos estndares. 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Nueva aproximacin: Porqu no utilizar la Web tal y como fue concebida. Esas caractersticas 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Nueva aproximacin (cont.): Es decir, las mismas caractersticas que hacen: Que una web sea fcil de usar por un navegador tambin hacen que la API de un servicio web sea fcil de usar por un programador Que un sitio web pueda escalar hasta lmites increibles (considerad el motor de bsquedas Google) tambin 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Nueva aproximacin (cont.): Qu principios sustentan la Web? Para guiar el diseo y desarrollo de la Web moderna, se utiliz el estilo arquitectnico REST REpresentational State Transfer (REST) Un estilo arquitectnico que dene recursos identicables, y mtodos 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin Vista actual Despliegue de la Web Servicios Web Servicios Web Restful La World Wide Web Nueva aproximacin (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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin 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 preeren la API RESTful de Amazon a Google dej de atender su API SOAP (03/2009) para centrarse en su API REST (ms fcil de usar) Aunque no todo lo que se dene como RESTful API lo es (ickr, ...) a http://www.oreillynet.com/pub/wlg/3005 Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Denicin 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Introduccin Recursos Principios Bsicos y Caractersticas ndice 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Introduccin Recursos Principios Bsicos y Caractersticas Representational State Transfer Denido por Roy Fielding en su tesis doctoral [Fielding(2000)] REST es un estilo arquitectnico para sistemas hipermedia distribuidos Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Introduccin Recursos Principios Bsicos y Caractersticas Representational State Transfer Se concebi como un modelo arquitectnico que explicaba cmo debera funcionar la Web Framework gua para el desarrollo de los protocolos estndar de la Web Identicar 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Introduccin Recursos Principios Bsicos y Caractersticas Representational State Transfer Este estilo intenta evocar una imagen de cmo se comporta una aplicacin hipermedia distribuida bien diseada: Una red de recursos (estados de una mquina virtual) El usuario va progresando a travs de la aplicacin seleccionando enlaces (transiciones de estados) El resultado de estas transiciones es otro recurso (el siguiente estado de la aplicacin) Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Introduccin Recursos Principios Bsicos y Caractersticas Representational State Transfer Entidades arquitectnicas Elementos de datos: Recurso, identicador de recurso, Representacin Todos los elementos de datos son accedidos a travs 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Introduccin Recursos Principios Bsicos y Caractersticas Representational State Transfer Entidades arquitectnicas Conectores: Client, Server, Cache, Resolver, Tunnel Proveen interfaces genricos para acceder y manipular el conjunto de valores de un recurso Todas las llamadas realizadas sobre los conectores deben ser autocontenidas. Toda la informacin necesaria para entender la solicitud se encuentra en la misma peticin, 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Introduccin Recursos Principios Bsicos y Caractersticas Representational State Transfer Entidades arquitectnicas Componentes: Origin server, Gateway, Proxy, user agent Los componentes se comunican transrindose representaciones de recursos a travs de su interfaz. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Introduccin Recursos Principios Bsicos y Caractersticas Representational State Transfer Recursos Recursos Es la abstraccin clave de sta arquitectura Se dene 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 identicador nico Todo los recursos comparten un interfaz homogneo comn Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Introduccin Recursos Principios Bsicos y Caractersticas Representational State Transfer Recursos Recursos (cont.) Un recurso puede tener distintas representaciones (denominadas variantes) Un recurso es un mapeado conceptual entre un identicador 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Introduccin Recursos Principios Bsicos y Caractersticas Representational State Transfer Recursos Recursos (cont.) Lo nico que se requiere que sea esttico en un recurso es la semntica del mapeo, ya que sta semntica es la que distingue un recurso de otro Por ejemplo: la ltima versin del software X es un mapeo que puede ir variando con el tiempo, sin embargo, la versin 1.5 de dicho software es un mapeo esttico. 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Introduccin Recursos Principios Bsicos y Caractersticas Representational State Transfer Recursos Recursos (cont.) Los recursos estn 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 representacin ms adecuada Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Introduccin Recursos Principios Bsicos y Caractersticas Representational State Transfer Representaciones Manejando Representaciones Una respuesta exitosa contiene la representacin actual del estado del recurso identicado Algunas representaciones contienen enlaces a los siguientes estados potenciales de la aplicacin 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Introduccin Recursos Principios Bsicos y Caractersticas Representational State Transfer Principios Bsicos Principios Bsicos El estilo arquitectnico REST se rige por los siguientes principios bsicos: Un recurso es cualquier cosa que tenga identidad y debe estar identicado mediante algn mecanismo El identicador de un recurso no expone detalles acerca de su implementacin Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Introduccin Recursos Principios Bsicos y Caractersticas Representational State Transfer Principios Bsicos Principios Bsicos Todos los recursos deben compartir la misma interfaz uniforme. Los mtodos denidos en esta interfaz debe ser utilizados acorde a la semntica 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Introduccin Recursos Principios Bsicos y Caractersticas Representational State Transfer Principios Bsicos Principios Bsicos El formato de las representaciones debe estar documentado y ser estndar. Las representaciones deben incluir enlaces a otros recursos relacionados (hypermedia as the engine of application state HATEOAS!!) La comunicacin debe ser autocontenida (stateless) Estos principios permiten, entre otras cosas, denir un sistema por capas Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Introduccin Recursos Principios Bsicos y Caractersticas Representational State Transfer Caractersticas Las caractersticas 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)... Caractersticas que por otra parte, tambin son deseables para cualquier middleware distribudo Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Introduccin Recursos Principios Bsicos y Caractersticas Representational State Transfer Caractersticas 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 conguracin previa) Despliegue independiente de componentes (clientes y servidores de cualquier tiempo interactan) Componentes intermedios para: reducir la latencia de la interaccin (cach), reforzar la seguridad (rewalls), permitir la adaptacin entre diferentes tecnologas (gateways)... Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Introduccin Recursos Principios Bsicos y Caractersticas Estilo Arquitectnico REST Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Breve Repaso ndice 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Breve Repaso El Protocolo HTTP Breve Repaso HTTP es un protocolo cliente-servidor Un cliente enva un mensaje de peticin a un servidor, el cul, despus de realizar algn tipo de procesamiento, devuelve un mensaje de respuesta que contiene un codigo de estado y el resultado de la peticin (o informacin acerca del cdigo de estado) Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Breve Repaso El Protocolo HTTP Breve Repaso El mensaje de peticin contiene: una lnea de peticin, cero o ms lneas 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Breve Repaso El Protocolo HTTP Lnea de Peticin Consta de tres partes separadas por espacios: el nombre del mtodo, la ruta local del recurso solicitado (Request-URI), y la versin 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Breve Repaso El Protocolo HTTP Mtodos HTTP La semntica de la peticin recae en el mtodo HTTP elegido: GET: Obtiene la representacin de un recurso identicado en la Request-URI. Puede ser parametrizado para restringir la representacin solicitada Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Breve Repaso El Protocolo HTTP Mtodos HTTP (cont.) POST: Este mtodo es utilizado para crear nuevos recursos y para aadir datos a un recurso ya creado. Cuando el mtodo es utilizado para crear recursos, el cuerpo del mensaje de peticin contiene la entidad a crear. sta entidad ser creada por el recurso identicado en la Request-URI y la decisin acerca de la nueva URL del nuevo recurso se deja al servidor Si el mtodo es utilizado para aadir nueva informacin, el cuerpo de la peticin contiene los datos que deben ser aadidos o procesados por el recurso identicado por la Request-URI Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Breve Repaso El Protocolo HTTP Mtodos HTTP (cont.) PUT: ste mtodo es utilizado para crear un nuevo recurso o para actualizar un recurso existente. El cuerpo del mensaje codica la entidad que va a ser publicada. Si la Request-URI apunta a una entidad existente, entonces el cuerpo del mensaje encapsula una actualizacin 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Breve Repaso El Protocolo HTTP Mtodos HTTP (cont.) DELETE: ste mtodo desvincula un recurso de la Request-URI especicada. Notad que ste mtodo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Breve Repaso El Protocolo HTTP Cabeceras HTTP dene 47 cabeceras stas cabeceras aaden meta-informacin adicional acerca del cuerpo del mensaje o, si ste no est presente, acerca del recurso identicado en la peticin. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Breve Repaso El Protocolo HTTP Cabeceras (cont.) Algunas cabeceras relevantes: Authorization: contiene credenciales de autorizacin que el cliente ha codicado mediante algn esquema acordado. El servidor decodica las credenciales y decide si debe llevar a cabo la peticin (o no) Host: El host objetivo de la peticin Location: Dene la localizacin 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Breve Repaso El Protocolo HTTP Cabeceras (cont.) Referer: Cuando se solicita una URI, esta cabecera identica la URL del recurso que ha referenciado esta peticin a esta URI. WWW-Authenticate: Esta cabecera se utiliza cuando el servidor requiere del cliente algn tipo de autenticacin. Esta cabecera debe contener al menos un desao de autenticacin 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Breve Repaso El Protocolo HTTP Mensaje de Respuesta Los mensajes de respuesta a peticiones HTTP se componen un cdigo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Breve Repaso El Protocolo HTTP Cdigos de Estado El cdigo de estado est compuesto por 3 dgitos Representa el resultado del intento realizado por el servidor para entender y satisfacer la peticin del cliente. El primer dgito del cdigo de estado dene el tipo de respuesta 1xx informational, 2xx success, 3xx redirection, 4xx client error, 5xx server error Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Breve Repaso El Protocolo HTTP Cdigos de Estado Algunos Cdigos de Estado: 200 (OK): Todo ha ido bien. 201 (Created): El servidor envia este cdigo cuando cre un nuevo recurso como consecuencia de una peticin del cliente. La cabecera Location se suele utilizar junto con este cdigo de estado para identicar 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Breve Repaso El Protocolo HTTP Cdigos de Estado (cont.) 202 (Accepted): La solicitud es aceptada pero no puede ser atendida en tiempo real. Ser procesada ms tarde. La cabecera Location se utiliza junto con ste cdigo 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 representacin. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Breve Repaso El Protocolo HTTP Cdigos de Estado (cont.) 400 (Bad Request): Este es el cdigo genrico de error en el cliente. Normalmente, se utiliza cuando la peticin no ha podido ser procesada incluso estando bien formada. 401 (Unauthorized): El cliente no tiene las credenciales de autenticacin adecuadas para utilizar el recurso. La cabecera WWW-Authenticate utilizada junto con esta respuesta, contiene al menos un desafo de autenticacin 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Breve Repaso El Protocolo HTTP Cdigos de Estado (cont.) 403 (Forbidden): La solicitud del cliente est bien formada pero el servidor rechaza procesarla. La razn est relacionada no con credenciales de autenticacin sino con la lgica de la aplicacin. Debera incluir una explicacin de la razn del rechazo. 405 (Method Not Allowed): El mtodo no es soportado por el recurso. La respuesta debe incluir una cabecera Allow que contenga los mtodos vlidos para el recurso solicitado. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Breve Repaso El Protocolo HTTP Cdigos de Estado (cont.) 406 (Not Acceptable): El cliente ha solicitado solicitado una representacin no disponible. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Breve Repaso Cuerpo del mensaje El cuerpo de los mensajes de respuesta puede contener una pequea descripcin textual del cdigo de estado devuelto. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Ventajas Fallos Comunes al Denir Sistemas RESTful ndice 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Ventajas Fallos Comunes al Denir Sistemas RESTful Aplicando REST a la Web Identicadores de Recursos URI: identicadores para todos los recursos Direccionamiento universal Fcil enlazado entre recursos La semntica del mapeo URI-Recurso no debera cambiar, aunque la representacin 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Ventajas Fallos Comunes al Denir Sistemas RESTful Aplicando REST a la Web HTTP como interfaz homogneo Utilizacin de los mtodos HTTP para denir operaciones sobre recursos: Interfaz simple y homogneo para todos los recursos: POST: Crea un nuevo recurso GET: Recupera la representacin 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Ventajas Fallos Comunes al Denir Sistemas RESTful Aplicando REST a la Web Ventajas: [Pautasso(2007)] Sencillez El interfaz uniforme es inmutable (evitando que los clientes fallen) HTTP/POX es ubcuo Interacciones stateless/sincronas Escalabilidad Demostrada caching, estructura por capas (redirecciones, ltering...), granjas de servidores (clusters)... Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Ventajas Fallos Comunes al Denir Sistemas RESTful Aplicando REST a la Web Ventajas (cont.) Se percibe como fcil de adoptar (dada su ligera infraestructura) Unica 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Ventajas Fallos Comunes al Denir Sistemas RESTful Aplicando REST a la Web Fallos comunes: [Prescod(2002)] Pensar que HTTP no es suciente Sobrecargar POST (en vez de utilizar DELETE, GET o PUT) Hacer que las URIs reejen la estructura interna de la aplicacin (en vez de vnculos semnticos) 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Ventajas Fallos Comunes al Denir Sistemas RESTful Aplicando REST a la Web Fallos Comunes (cont.) Uso de sesiones en el servidor Inventarse identicadores propios para los recursos Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa ndice 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Diseo de Aplicaciones RESTful Identicar Recursos Cules son las entidades de mi sistema? Qu identicador (URI) van a tener? Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Diseo de Aplicaciones RESTful Seleccionar Representaciones Qu representaciones van a proveer mis recursos? Cmo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Diseo de Aplicaciones RESTful Denir Interfaz: Mtodos, Cdigos de estado Qu operaciones soportan mis recursos? Qu cdigos de estado devolvern dichas operaciones? Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Identicando los recursos Seleccionando la Representacin Deniendo la Interfaz ndice 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Identicando los recursos Seleccionando la Representacin Deniendo la Interfaz Ejemplo: Correo Interno de Facebook Cmo funciona?Cmo funciona algn webmail que conozcis? Facebook arma tener una API REST... Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Identicando los recursos Seleccionando la Representacin Deniendo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Identicando los recursos Seleccionando la Representacin Deniendo 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 ledo: 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Identicando los recursos Seleccionando la Representacin Deniendo la Interfaz Ejemplo: Correo Interno de Facebook Cmo creis que debera funciona? Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Identicando los recursos Seleccionando la Representacin Deniendo la Interfaz Ejemplo: Correo Interno de Facebook Identicando los recursos Recordad: las aplicaciones deben dividirse en recurso (nombres), no en servicios (verbos) Como entidades podramos 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Identicando los recursos Seleccionando la Representacin Deniendo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Identicando los recursos Seleccionando la Representacin Deniendo la Interfaz Ejemplo: Correo Interno de Facebook Seleccionando la Representacin 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Identicando los recursos Seleccionando la Representacin Deniendo la Interfaz Ejemplo: Correo Interno de Facebook Deniendo la Interfaz Pensad cmo: Crear un mensaje en un folder del usuario? Borrar un mensaje de cualquier folder? Enviar un nuevo mail a otro usuario? Modicar un mensaje como borrador? Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Identicando los recursos Seleccionando la Representacin Deniendo la Interfaz Ejemplo: Correo Interno de Facebook Diagrama de estados de la aplicacin (incompleto) Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Identicando los recursos Seleccionando la Representacin Deniendo la Interfaz Ejemplo: Correo Interno de Facebook Representacin Mi Correo Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Identicando los recursos Seleccionando la Representacin Deniendo la Interfaz Ejemplo: Correo Interno de Facebook Representacin Borrador Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Identicando los recursos Seleccionando la Representacin Deniendo la Interfaz Ejemplo: Correo Interno de Facebook Tambin hay que pensar en las las respuestas los mtodos: Utilizando los cdigos 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Identicando los recursos Seleccionando la Representacin Deniendo la Interfaz Ejemplo: Correo Interno de Facebook Mailbox http://www.facebook.com/users/{userId}/mail/ Metodo Contenido Repres. Accin Codigo GET Lista de folders XML, HTML Devuelve una lis- ta de los folders denidos por el usuario {userId} 200 - OK, 406 - Not Acceptable POST Representacin del Folder XML, HTML Crea un folder de correo con nom- bre determinado 201 - Created + Location, 403 - Forbidden PUT n/a 405 - Method Not Allowed DELETE n/a 405 - Method Not Allowed Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Identicando los recursos Seleccionando la Representacin Deniendo la Interfaz Ejemplo: Correo Interno de Facebook Folder http://www.facebook.com/users/{userId}/mail/{folderId}/ Metodo Contenido Repres. Accin Codigo GET Lista mensajes XML, HTML Devuelve una lista de los mensajes conteni- dos en el folder {folde- rId} 200 - OK, 406 - Not Acceptable POST Mensaje XML, HTML Si {folderId} es Envia- dos se enva el mensaje al usuario indicado en el campo destinatario. Se crea mensaje en envia- dos 201 - Created + Loca- tion, 403 - Forbidden PUT n/a 405 - Method Not Allo- wed DELETE Elimina el folder {fol- derId} del usuario {use- rId} slo si fue creado por el usuario y no tie- ne mensajes. 200 - OK, 403 - Forbid- den Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Identicando los recursos Seleccionando la Representacin Deniendo la Interfaz Ejemplo: Correo Interno de Facebook eMail http://www.facebook.com/users/{userId}/mail/{folderId}/{mailId} Metodo Contenido Repres. Accin Codigo GET Representacion del correo XML, HTML Devuelve una re- presentacin del correo {mailId} 200 - OK, 406 - Not Acceptable POST n/a 405 - Method Not Allowed PUT Representacion del correo XML,HTML Actualiza el co- rreo, slo si es bo- rrador 200 - OK, 400 - Bad Request DELETE Elimina el correo {mailId} de la carpeta {folde- rId} del usuario {userId} 200 - OK, 403 - Forbidden Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Resumen El estado y la funcionalidad de la aplicacin est dividida entre los recursos Cada recurso es identicado globalmente utilizando una sintaxis universal para enlaces hipermedia Todos los recursos comparten un interfaz comn para la transferencia de estado entre los clientes y los recursos. Esta interfaz est formada por : Un conjunto restringido de operaciones bien denidas (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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Resumen En denitiva 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa ndice 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa 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 Coe 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa ndice 1 La World Wide Web 2 Representational State Transfer 3 El Protocolo HTTP 4 Aplicando REST a la Web 5 Diseo 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Untangled, musings of Roy T. Fielding http://roy.gbiv.com/untangled/ Steve Vinoskis 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa PREGUNTAS ?? Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa 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 Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa 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. OReilly, May 2007. ISBN 0596529260. Sergio Saugar Arquitectura del Software La World Wide Web Representational State Transfer El Protocolo HTTP Aplicando REST a la Web Diseo de Aplicaciones RESTful Ejemplo: Correo Interno de Facebook Resumen Lecturas recomendadas Enlaces Recomendados Preguntas Bibliografa Arquitectura del Software Tema 6 REST: La Arquitectura de la World Wide Web Sergio Saugar sergio.saugar@urjc.es 5 o Ingeniera Informtica Univ. Rey Juan Carlos Curso 2010-2011 Sergio Saugar Arquitectura del Software