sao220409 servicios web rest sao220409. introducciónintroducción ¿qué es rest?¿qué es rest?...

20
Servicios Web REST SAO220409

Upload: manuelita-brion

Post on 11-Apr-2015

141 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: SAO220409 Servicios Web REST SAO220409. IntroducciónIntroducción ¿Qué es REST?¿Qué es REST? REST vs SOAPREST vs SOAP PropuestaPropuesta Demo:Demo: Twitter

Servicios Web RESTSAO220409

Page 2: SAO220409 Servicios Web REST SAO220409. IntroducciónIntroducción ¿Qué es REST?¿Qué es REST? REST vs SOAPREST vs SOAP PropuestaPropuesta Demo:Demo: Twitter

•Introducción

•¿Qué es REST?

•REST vs SOAP

•Propuesta

•Demo: Twitter REST API

Consumo Servicios Web RESTTemario

Page 3: SAO220409 Servicios Web REST SAO220409. IntroducciónIntroducción ¿Qué es REST?¿Qué es REST? REST vs SOAPREST vs SOAP PropuestaPropuesta Demo:Demo: Twitter

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

Page 4: SAO220409 Servicios Web REST SAO220409. IntroducciónIntroducción ¿Qué es REST?¿Qué es REST? REST vs SOAPREST vs SOAP PropuestaPropuesta Demo:Demo: Twitter

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)

Page 5: SAO220409 Servicios Web REST SAO220409. IntroducciónIntroducción ¿Qué es REST?¿Qué es REST? REST vs SOAPREST vs SOAP PropuestaPropuesta Demo:Demo: Twitter

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)

Page 6: SAO220409 Servicios Web REST SAO220409. IntroducciónIntroducción ¿Qué es REST?¿Qué es REST? REST vs SOAPREST vs SOAP PropuestaPropuesta Demo:Demo: Twitter

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)

Page 7: SAO220409 Servicios Web REST SAO220409. IntroducciónIntroducción ¿Qué es REST?¿Qué es REST? REST vs SOAPREST vs SOAP PropuestaPropuesta Demo:Demo: Twitter

¿Qué es RESTful?

Introducción - ¿Qué es RESTful?Consumo Servicios Web REST

Page 8: SAO220409 Servicios Web REST SAO220409. IntroducciónIntroducción ¿Qué es REST?¿Qué es REST? REST vs SOAPREST vs SOAP PropuestaPropuesta Demo:Demo: Twitter

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

Page 9: SAO220409 Servicios Web REST SAO220409. IntroducciónIntroducción ¿Qué es REST?¿Qué es REST? REST vs SOAPREST vs SOAP PropuestaPropuesta Demo:Demo: Twitter

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

Page 10: SAO220409 Servicios Web REST SAO220409. IntroducciónIntroducción ¿Qué es REST?¿Qué es REST? REST vs SOAPREST vs SOAP PropuestaPropuesta Demo:Demo: Twitter

Í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

Page 11: SAO220409 Servicios Web REST SAO220409. IntroducciónIntroducción ¿Qué es REST?¿Qué es REST? REST vs SOAPREST vs SOAP PropuestaPropuesta Demo:Demo: Twitter

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

Page 12: SAO220409 Servicios Web REST SAO220409. IntroducciónIntroducción ¿Qué es REST?¿Qué es REST? REST vs SOAPREST vs SOAP PropuestaPropuesta Demo:Demo: Twitter

Referenciar Servicio Web REST

Propuesta

URL WS-REST

Datos Autenticación Proxy

Servicio

PL/SQLConsumir

Servicio Web REST

FWCOB

Consumo Servicios Web REST

Page 13: SAO220409 Servicios Web REST SAO220409. IntroducciónIntroducción ¿Qué es REST?¿Qué es REST? REST vs SOAPREST vs SOAP PropuestaPropuesta Demo:Demo: Twitter

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

Page 14: SAO220409 Servicios Web REST SAO220409. IntroducciónIntroducción ¿Qué es REST?¿Qué es REST? REST vs SOAPREST vs SOAP PropuestaPropuesta Demo:Demo: Twitter

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

Page 15: SAO220409 Servicios Web REST SAO220409. IntroducciónIntroducción ¿Qué es REST?¿Qué es REST? REST vs SOAPREST vs SOAP PropuestaPropuesta Demo:Demo: Twitter

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

Page 16: SAO220409 Servicios Web REST SAO220409. IntroducciónIntroducción ¿Qué es REST?¿Qué es REST? REST vs SOAPREST vs SOAP PropuestaPropuesta Demo:Demo: Twitter

Consumo Servicios Web REST

Page 17: SAO220409 Servicios Web REST SAO220409. IntroducciónIntroducción ¿Qué es REST?¿Qué es REST? REST vs SOAPREST vs SOAP PropuestaPropuesta Demo:Demo: Twitter

Demo: Twitter REST APIConsumo Servicios Web REST

Page 18: SAO220409 Servicios Web REST SAO220409. IntroducciónIntroducción ¿Qué es REST?¿Qué es REST? REST vs SOAPREST vs SOAP PropuestaPropuesta Demo:Demo: Twitter

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

Page 19: SAO220409 Servicios Web REST SAO220409. IntroducciónIntroducción ¿Qué es REST?¿Qué es REST? REST vs SOAPREST vs SOAP PropuestaPropuesta Demo:Demo: Twitter

¿Preguntas?

Page 20: SAO220409 Servicios Web REST SAO220409. IntroducciónIntroducción ¿Qué es REST?¿Qué es REST? REST vs SOAPREST vs SOAP PropuestaPropuesta Demo:Demo: Twitter

Consumo Servicios Web SOAP