Servicios Web RESTSAO220409
•Introducción
•¿Qué es REST?
•REST vs SOAP
•Propuesta
•Demo: Twitter REST API
Consumo Servicios Web RESTTemario
Introducción - ¿Qué es REST?
¿Qué es REST (REpresentational State Transfer)?
NO es una especificación, ni un estándar, es un “estilo” de arquitectura, que define una serie de principios para el diseño de arquitecturas en red, tales, como la Web.
NO es un estándar, pero está basado en estándares:
• HTTP• URL• Representación de Recursos: XML / HTML / GIF / JPEG• Tipos MIME: text/xml, text/html, application/pdf
Fielding, Roy (2000)
Consumo Servicios Web REST
Principios REST (1)
Recursos Uniformemente Accesibles (URI Única):
Consultar listado de todos los clientes:http://smartflex/ccgac/customers
Consultar listado de clientes por nombre “andres” y apellido “lopez”:http://smartflex/ccgac/customers?name=andres&lastname=lopez
Consultar detalle del cliente “123”:http://smartflex/ccgac/customer/123
Consultar listado de clientes por apellido “carlos”:http://smartflex/ccgac/customers?opcion=listado&name=carlos
Consultar detalle del cliente “123”:http://smartflex/ccgac/customers?opcion=detalle&id=123
Consumo Servicios Web RESTIntroducción - ¿Qué es REST?
Fielding, Roy (2000)
Consultar cliente “13”:GEThttp://smartflex/ccgac/customer/13
Registrar cliente “13”:PUThttp://smartflex/ccgac/customer/13
Principios REST (2)
Recursos Accedidos y Actualizados por Operaciones PUT, GET, POST y DELETE (CRUD):
Consultar cliente “13”:POST http://smartflex/ccgac/getCustomer?id=13
Eliminar cliente “13”:POST http://smartflex/ccgac/delCustomer?id=13
Consumo Servicios Web RESTIntroducción - ¿Qué es REST?
Actualizar cliente “13”:POSThttp://smartflex/ccgac/customer/13
Eliminar cliente “13”:DELETEhttp://smartflex/ccgac/customer/13
Fielding, Roy (2000)
Principios REST (3)
Uso Metadatos Descripción y Representación Recursos:
• Descripción: TITLE / DESCRIPTION / SUBJECT / CREATOR• Representación: XML / HTML / GIF / JPEG / PDF (Tipos MIME)• Formato: Language / Encoding / Charset
Consumo Servicios Web RESTIntroducción - ¿Qué es REST?
Fielding, Roy (2000)
¿Qué es RESTful?
Introducción - ¿Qué es RESTful?Consumo Servicios Web REST
Introducción - Dominios de Aplicación REST
http://www.programmableweb.com
Consumo Servicios Web REST
Dominios de Aplicación REST
e-Commerce• eBay (Hasta 2008)• Amazon Product Advertising• Yahoo Shopping• Groupon
Social Networking• Twitter• Facebook• LinkedIn• Instagram
Sistemas de Información Geográfica• ArcGIS• OpenStreetMap
http://www.programmableweb.com
5%
58%
29%
5%
2006
JavaScriptRESTSOAPXML-RPC
5%
71%
21%
2%
2014
Consumo Servicios Web RESTIntroducción - REST vs SOAP
REST vs SOAP
Ítem REST SOAP
DefiniciónEstilo de Arquitectura
Arquitectura Orientado a Recursos (ROA)
Protocolo
Arquitectura Orientado a Servicios (SOA)
Dominio de Aplicación Aplicaciones Internet dirigidas a clientes desconocidos.
Aplicaciones empresariales dirigidas a integración de sistemas heterogéneos, código legado, etc.
Definición de Interface Ningún estándar. Iniciativas: WADL (2006) y WSDL 2.0 (2007)
WSDL (2001)Generación clientes Stubs para su depuración.
Transferencia de Datos HTTP SOAP sobre HTTP / FTP / SMTS
Formato de Datos Soporta diferentes formatos (XML, JSON, YAML, etc.).
Solamente soporta formato XML.Requiere XML “Wrapper”
Escalabilidad Mayor escalabilidad. Menor escalabilidad.
Interoperabilidad Solamente HTTP Muchos estándares y proveedores.
Cache En solicitudes GET, permite a los Proxys realizar cache más fácilmente.
Utiliza solicitudes POST, dificultando el cache de las respuestas.
Complejidad HTTP nativo en todos los lenguajes.Construcción simple de solicitud HTTP.
Requiere librerías cliente.Generación clientes stubs/proxies.
Introducción - REST vs SOAP
REST vs SOAP
Consumo Servicios Web REST
Internet
Propuesta
Consumo de Servicios Web
Cliente Servidor
SolicitudRespuesta
Servicios WebSOAP
Procesos(Servicios PL/SQL)
Protoc
olo
W3C
SOAP
Estilo de
Arquitectura
REST
Esp
ecificación
W3C
JavaScript
Protoc
olo U
serLand
XML-RPC
Estilos y Protocolos
Consumo Servicios Web REST
Referenciar Servicio Web REST
Propuesta
URL WS-REST
Datos Autenticación Proxy
Servicio
PL/SQLConsumir
Servicio Web REST
FWCOB
Consumo Servicios Web REST
Servicio PL/SQL[ Paquete PL/SQL] . Invoke ( path1 , … , pathN , arg1 , … , argN )
URL WS-RESThttp [ s ]: // host [ : port ] [ / {path1} / … / {pathN} ] [ ? {arg1} & … & {argN} ]
Propuesta
Referenciar Servicio Web REST
Paquete PL/SQL
Consulta de clientes por nombre y apellido:http://smartflex/ccgac/customers?{name}&{lastName}WS_GetCustomers.Invoke ( isbName, isbLastName )
Consulta de ventas Año – Mes – Día:http://smartflex/ccgac/sales/{YYYY}/{MM}/{DD}WS_GetSales.Invoke ( isbYYYY, isbMM, isbDD )
Consumo Servicios Web REST
Nombre (*) Descripción (*) Tipo de Dato (*)id Código de Cliente Numériconame Nombre de Cliente Textolastname Apellido de Cliente Texto
type Tipo de Cliente Numérico
Propuesta - Ejemplo 1: Consultar Clientes
Consultar Listado de Clientes (REST)Descripción:
Método: GET
Parámetros:
Paquete PL/SQL: WS_GetCustomers
http://smartflex/ccgac/customers?{id}&{name}&{lastname}&{type}URL:
WS_GetCustomers
SetHeader( isbName in varchar2, isbValue in varchar2)GetResponseHeader( isbName in varchar2, osbValue out varchar2)Invoke( inuId in numeric, isbName in varchar2 isbLastName in varchar2, inuType in numeric, oclResponse out clob)
GET http://smartflex/ccgac/customers?id=123&name=julio&lastname=nieto&type=12
Consumo Servicios Web REST
Nombre (*) Descripción (*) Tipo de Dato (*)id Código de Cliente Numérico
Propuesta - Ejemplo 2: Actualizar Cliente
Actualizar Datos de Cliente (REST)Descripción:
Método: POST
Parámetros:
Paquete PL/SQL: WS_UpdateCustomer
http://smartflex/ccgac/customer/{id}URL:
WS_UpdateCustomer
SetHeader( isbName in varchar2, isbValue in varchar2)GetResponseHeader( isbName in varchar2, osbValue out varchar2)Invoke( inuId in numeric, iclRequest in clob, oclResponse out clob)
POSThttp://smartflex/ccgac/customer/123
Consumo Servicios Web REST
Consumo Servicios Web REST
Demo: Twitter REST APIConsumo Servicios Web REST
Enlaces de Interes
Architectural Styles and the Design of Network-based Software Architectureshttp://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
Web Application Description Language (WADL)http://www.w3.org/Submission/wadl/
Multipurpose Internet Mail Extensions (MIME)http://www.w3.org/Protocols/rfc1341/0_Abstract.html
Apigee: API Consolehttps://apigee.com/console
ReferenciasConsumo Servicios Web REST
¿Preguntas?
Consumo Servicios Web SOAP