Introduccion a los Servicios Web Rest

Post on 20-Jan-2015

12.305 views 3 download

description

En estas transparencias se hace un repaso a las ventajas de la computación distribuida y a las distintas iniciativas de Servicios Web, para terminar en los servicios de tipo REST. Estas transparencias son la introducción a las transparencias sobre consumo de Servicios Web REST en PHP (http://www.slideshare.net/brenes/rest-en-php). Usado en el Curso de Extensión Universitaria "Desarrollo de aplicaciones web mediante servicios web y APIs abiertas" de la Universidad de Oviedo: http://directo.uniovi.es/postgrado/cabecera_ep.asp?Curso=2008&IdPrograma=5187

Transcript of Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Introducción a Servicios Web

David J. Brenes MartínezDesarrollador en Grupo Índigo

Curso de Extensión UniversitariaDesarrollo de aplicaciones web mediante servicios web y APIs abiertas

Universidad de Oviedo

2009/07/20

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

La visión del desconocimiento

La aplicación es unbloqueTodas las operacionesestán dentro de lamisma aplicación.Los datos están en lapropia aplicación.

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Una visión un poco más realista

La aplicación estáformada porcomponentes.Algunas operacionesno pertenecen a laaplicación.Los datos están ensitios externos.

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Una visión un poco más óptima

Componentes endiferentesordenadores.Comunicaciónmediante protocolos.Desacoplamientoentre aplicaciones.

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Una visión un poco distribuida

Compartición dedatos entreaplicaciones.Posible medio decomunicación entreaplicaciones.

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Una visión distribuida

Partes de laaplicación en otrosordenadores.Solicitud de servicios.Mayordesacoplamientoentre aplicaciones.

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Una visión realmente distribuida

Componentesreaprovechables.Simplificación dedesarrollo.

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Abundantes escenarios

Conexión a Base de DatosAplicaciones clientes-servidor.Conexiones FTP/TelnetNavegador Web

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Ya... ¿pero cómo?

Protocolos ad-hoc.Las aplicaciones se mandan mensajes unas a otras.Los mensajes pueden ser órdenes a ejecutar.Los interlocutores deben tener la lógica para enviarmensajes.

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Pidiendo cosas... RPC

Remote Procedure CallLlamadas a operaciones en aplicaciones remotas.Se mandan los parámetros y la orden a ejecutar. Serecibe el resultado.Hay muy diversas implementaciones

Java RMI.NET Remoting¡¡CORBA!!

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Pidiendo cosas... RPC

Ejemplo de RPCobjeto.metodo();

El método podría ejecutarse en remoto...Normalmente se acompañan de lenguajes dedescripción

Facilidad de programaciónEstandarizaciónAutomatización

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Formatos ad-hoc

Se ajustan el 100% al problemaPueden ser optimizados y modificadosTienen una adopción más rápida en escenariossimples

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Formatos ad-hoc

Cada implementación empieza de ceroRequieren un proceso de diseño del protocoloRequiere la adopción del protocolo por parte del clientey el servidor

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

¿Qué se necesita?

Estándar reconocidoMúltiples implementacionesSoporte de envío de mensajesFormato ‘simple’ que soporte cosas complejas

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Who are you gonna call?

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Estructurando el mensaje

XML permite representar entidadesLos mensajes consisten de entidades (Llamada amétodo, tipos, parámetro, valor de retorno, fallo. . . )El formato permite intercambiar mensajes equivalentesa llamadas de métodos

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Estructurando el mensaje

Ejemplo de RPC<?xml version="1.0"?><methodCall><methodName>examples.getStateName</methodName><params><param><value><i4>40</i4></value></param></params></methodCall>

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Implementaciones

PHPC++Java.NETRubyPythonObjetive-C (Mac)PerlAction Script¡Haskell!

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Ventajas

Todo lenguaje...

Capaz de realizar peticiones HTTP puede realizar lacomunicación.Capaz de procesar XML puede procesar la respuesta.

XML-RPC = HTTP + XML

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Más información sobre el servicio

XML-RPC describe las llamadas que se puedenrealizar.Más información podría llevar a una mayorautomatización.XML-RPC no está preparado para crecer.

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Más información sobre el servicio

SOAP permite una mayor descripciónMás información => mayor automatización.Más información => más funcionalidad

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Datos sobre SOAP

Evolución de XML-RPCFormato adoptado por el W3CEstá en su versión 2.0, aunque la más soportada es la1.1Forma parte del conjunto WS-*

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Describiendo el servicio

SOAP recupera los lenguajes de descripción deservicio.Se describen tipos, operaciones, excepciones, ‘puntosde entrada’ y másLa descripción se realiza mediante un fichero WSDL

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Describiendo el servicio

Ejemplo de WSDL<?xml version="1.0" encoding="UTF-8"?><description xmlns="http://www.w3.org/ns/wsdl"xmlns:tns="http://www.example.com/wsdl20sample"xmlns:whttp="http://www.w3.org/ns/wsdl/http"xmlns:wsoap="http://www.w3.org/ns/wsdl/soap"targetNamespace="http://www.example.com/wsdl20sample">...</description>

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Creando tipos

En XML-RPC se pueden crear estructuras nuevasEN SOAP se permite la definición de nuevos tiposUso de XML-Schema

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Creando tipos

Ejemplo de WSDL - Tipos<types><xs:schemaxmlns="http://www.example.com/wsdl20sample"xmlns:xs="http://www.w3.org/2001/XMLSchema" target-Namespace="http://www.example.com/wsdl20sample"><xs:element name="request"><xs:complexType><xs:attribute name="method" type="xs:string"use="required"/></xs:complexType></xs:element></xs:schema></types>

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Definiendo la interface

Se define qué operaciones se permitenSe definen los parámetros y respuestasSe definen las excepciones

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Definiendo la interface

Ejemplo de WSDL - Interfaces<interface name="RESTfulInterface"><fault name="ClientError" element="tns:response"/><operation name="Get"pattern="http://www.w3.org/ns/wsdl/in-out"><input messageLabel="GetMsg" element="tns:request"/><output messageLabel="SuccessfulMsg"element="tns:response"/></operation></interface>

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Especificando la capa de transporte

SOAP permite a priori varias capas de transporte, nosolo HTTP.Se pueden especificar varios protocolos de transporte.

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Especificando la capa de transporte

Ejemplo de WSDL - Binding

<binding name="RESTfulInterfaceHttpBinding"interface="tns:RESTfulInterface"type="http://www.w3.org/ns/wsdl/http"><operation ref="tns:Get" whttp:method="GET"/><operation ref="tns:Post" whttp:method="POST"whttp:inputSerialization="application/x-www-form-urlencoded"/><operation ref="tns:Put" whttp:method="PUT"whttp:inputSerialization="application/x-www-form-urlencoded"/><operation ref="tns:Delete" whttp:method="DELETE"/></binding>

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Indicando el punto de entrada

Se puede indicar la URL en la que responderá elservicio webHay un solo punto de entrada para todas lasoperacionesSOAP indica en el mensaje la operación concreta quedeseamos

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Indicando el punto de entrada

Ejemplo de WSDL - Servicicios<service name="RESTfulService"interface="tns:RESTfulInterface"><endpoint name="RESTfulServiceHttpEndpoint"binding="tns:RESTfulInterfaceHttpBinding"address="http://www.example.com/rest/"/></service>

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

El ecosistema WS-*

Conjunto de especificaciones sobre servicios webSOAPCada especificación se especializa en un aspecto delos Servicios WebJuntos forman un conjunto bastante coherente

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

El ecosistema WS-*

WS-Addressing: Encaminamiento de mensajes SOAP.WS-Transfer: Transferencia de recursos involucradosen WS-AdressingWS-Eventing: Suscripción a otros Servicios WebWS-Policy: Soporte de políticas (de uso, de servicio. . . )WS-Security: Aspectos de seguridadWS-BPEL y WS-Choreography: Relaciones entreservicios web para definir procesos de negocio

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

¿Suficiente descripción?

La toma de decisiones no se automatizaNecesidad de aplicar sistemas de razonamiento einferenciaWeb Semántica + Servicios Web = Servicios WebSemánticos

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Implementación

El desarrollo de un WSDL puede ser muy duroEl procesado de los mensajes y sus respuestas ya noes trivialExistencia de múltiples herramientas de automatización‘Necesidad’ de dichas herramientas

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Generación de código

Ejemplos:

PHP: NuSOAPJAVA: wsdl2java.NET: Visual Studio

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Generación de código

Se indica el fichero descriptorLa herramienta genera clases que se encargan de todala comunicación por HTTPSe crean clases que simbolizan las operaciones ytienen métodos para realizar la llamada.En lenguajes dinámicos las clases se crean al vuelo

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Generación de WSDL

Ejemplos:

PHP: NuSOAPPHP (Symfony): ckWebServiceJAVA: java2wsdl.NET: Visual Studio

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Generación de WSDL

Se indican las operaciones a exponerLa herramienta genera la descripción de los serviciosSe crean tipos para hacer corresponder con losremotos

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Ventajas

Mayor descripción del servicioMás funcionalidades (especificaciones para seguridad,orquestación de servicios. . . )Herramientas que facilitan el desarrollo

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Ventajas

Más estables y fiables (la descripción indica losdetalles sobre la comunicación)las modificaciones solo requieren ejecutar de nuevo laherramenta de generación de códigoUsados en entornos donde se requiere muy altafiabilidad

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Back to basics

SOAP exige una descripción más detalladaSOAP da soporte a muchas funcionalidades extra(seguridad, confianza. . . )SOAP requiere herramientas adecuadas

SOAP es demasiado complejo.

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Back to basics

HTTP es un método de transporte válidoHTTP ofrece alguna funcionalidad extra (HTTPS paraconexiones seguras)HTTP dispone de diversos ‘verbos’ para distintasacciones (GET, POST, PUT. . . )

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Filosofía REST

Las peticiones se hacen a recursos, no a métodosNo es ‘dame los datos del alumno 1’ sino ‘acceder alalumno 1’

Cada recurso equivale a un punto de entrada para elservicio web

SOAP disponía de 1 punto de accesoLos métodos que se pueden invocar son los delestándar HTTP

Para el mismo punto de acceso (recurso) se puedenejecutar distintas acciones

Está basado en HTTP

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Filosofía REST

Concepto publicado por Roy Fielding en su tesis doctoral.

REST enables intermediate processing by constrainingmessages to be self-descriptive: interaction is statelessbetween requests, standard methods and media types areused to indicate semantics and exchange information, andresponses explicitly indicate cacheability.

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Filosofía REST

No es un estándarNo define formatosEs una manera de desarrollar servicios web

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

REST y CRUD

En un sistema basado en métodos (RPC) hay ‘n’acciones posiblesEn un sistema basado en recursos (RES) hay ‘n’recursos, pero solo 4 acciones básicasUn recurso:

Se creaSe obtieneSe actualizaSe elimina

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

REST y CRUD

Problema básico de gestión de datos: CRUD

CREATERETRIEVEUPDATEDELETE

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

REST y CRUD

Problema básico de gestión de datos: CRUD => PGPD

CREATE => PUTRETRIEVE => GETUPDATE => POSTDELETE => DELETE

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Método PUT

RFC 2616, HTTP PUTThe PUT method requests that the enclosed entity bestored under the supplied Request-URI.If the Request-URI refers to an already existing resource,the enclosed entity SHOULD be considered as a modifiedversion of the one residing on the origin server.

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Método PUT

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Método GET

RFC 2616, HTTP GETThe GET method means retrieve whatever information (inthe form of an entity) is identified by the Request-URI.

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Método GET

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Método POST

RFC 2616, HTTP POSTThe POST method is used to request that the origin serveraccept the entity enclosed in the request as a newsubordinate of the resource identified by the Request-URI inthe Request-Line.

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Método POST

RFC 2616, HTTP POST- Annotation of existing resources;- Extending a database through an append operation.

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Método POST

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Método DELETE

RFC 2616, HTTP DELETEThe DELETE method requests that the origin server deletethe resource identified by the Request-URI.

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Método DELETE

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

REST y otros protocolos

REST no detalla formatosXML-RPC podría implementarse sobre RESTSOAP 2.0 permite crear servicios web RESTful

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Definición del servicio

REST no habla de definición de servicioLa respuesta puede tener el formato que se quiera(XML, JSON, HTML. . . )REST no contempla el lanzamiento de excepciones

HTTP posee códigos de error para indicar problemas

Puede usarse un lenguaje de descripción sobre REST

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Funcionalidades añadidas

Las funcionalidades están presentes en HTTP

Seguridad mediante HTTPSAutenticación mediante HTTP-AuthGestión de erroresPosibilidad de incorporar certificados digitalesManejo de sesiones en el servidor

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Comunicación entre aplicaciones

Una aplicación aislada está muy limitada.La separación de funciones permite optimizardesarrollos y aplicacionesLa comunicación puede realizarse entre distintosordenadoresLas aplicaciones pueden comunicarse con variasaplicaciones

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Formatos de comunicación

Un formato ad-hoc es rápido de diseñar (mal)Un formato estándar puede no ajustarse al 100%Un formato estandar cuenta con más experienciaUn formato estándar contará con implementaciónHTTP es un formato estándar de comunicaciones

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Servicios Web

Intercambio de mensajes a través de HTTPXML-RPC: Formato básico de llamada a procedimientoremoto.SOAP: Formato RPC más elaborado y con variosestándares a su alrededorREST: Filosofía de desarrollo de Servicios Webbasada en HTTP

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Servicios Web

Y basta de teoría por hoy

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Créditos

Los ejemplos sobre SOAP provienen de la Wikipedia

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Licencia

Estas transparencias se publican bajo licencia CreativeCommons y se pueden redistribuir o modificar bajo lassiguientes condiciones:

Se dé reconocimiento al autor de estas transparencias.No se use con propósitos comerciales.Se distribuya con la misma licencia.

Texto de la licencia: http://creativecommons.org/licenses/by-nc-sa/3.0/