EXPERIENCIA Y
CONOCIMIENTO
PROFESIONAL
• Líder de Unidad de Sistemas
Tributario en la DGI desde-2020
• Desarrollador de sitios y
sistemas web desde el 2012
• Especialista en análisis de datos
con Power Bi y Minería de Datos
• Master en Informática
Empresarial desde el 2017
Ing. Luis Octavio Tenorio
CONTENIDO CLASE
API REST.
• Consumo de servicios web con REST
• Depurando REST
• Ejemplos de consumo y publicación de servicios web con REST
OBJETIVOS DE LA CLASE
• Definir bloques de códigos con el estándar REST para la comunicación.
• Analizar escenarios en el cual sean necesarios la implementación de los Web
Services. "
¿REST, SOAP,
WSDL, UDDI?
Para disponer de una verdadera plataforma de servicios web se requieren
una serie de capas que permitan:
La invocación remota de los servicios.
La localización de servicios.
La descripción de la naturaleza de un servicio.
Más cosas... (transacciones, autenticación, etc.)
Para proporcionar estas funcionalidades se están desarrollando varias
tecnologías diferentes:
Invocación remota: REST, SOAP o XML-RPC.
Descripción de servicios: WSDL.
Localización de servicios: UDDI.
Estos tres días vais a “jugar” con REST, SOAP y WSDL usando PHP.
REST en pocas
palabras
Representational State Transfer (“Architectural Styles and the Design
of Network-based Software Architectures”, Roy Fielding)
No es una tecnología sino un “estilo arquitectónico” software
Se basa en una serie de principios y suele describir cualquier API
que emplea XML (o texto plano) para el intercambio de datos sobre
HTTP sin ningún tipo de capa de mensajería.
En general la mayor parte APIs autoproclamadas “REST” no se
adhieren a los principios del estilo y, así, se suele aplicar el término a
cualquier sistema de invocación de procedimientos remotos vía
HTTP mediante GET y POST.
RECURSOS Y VERBOS HTTP
URI HTTP Acción
/Tareas GET Ver Todos
/Tareas POST Crear
/Tareas/1 GET Ver uno
/Tareas/1 PUT/PATCH Actualizar
/Tareas/1 DELETE Borrar
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
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 REST
Introducción - ¿Qué es REST?
Consultar cliente “13”:
GET
http://smartflex/ccgac/customer/13
Registrar cliente “13”:
PUT
http://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 REST
Introducción - ¿Qué es REST?
Actualizar cliente “13”:
POST
http://smartflex/ccgac/customer/13
Eliminar cliente “13”:
DELETE
http://smartflex/ccgac/customer/13
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 REST
Introducción - ¿Qué es REST?
Ítem REST SOAP
Definición
Estilo 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
Solicitud
Respuesta
Servicios Web
SOAP
Procesos
(Servicios PL/SQL)
Protocolo
W3C
SOAP
Estilo
de
Arquitectura
REST
Especificación
W3C
JavaScript
Protocolo
UserLand
XML-RPC
Estilos y Protocolos
Consumo Servicios Web REST
Referenciar Servicio Web REST
Propuesta
URL WS-REST
Datos
Autenticación
Proxy
Servicio PL/SQL
Consumir
Servicio Web REST
Consumo Servicios Web REST
Servicio PL/SQL
[ Paquete PL/SQL] . Invoke ( path1 , … , pathN , arg1 , … , argN )
URL WS-REST
http [ 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
Enlaces de Interes
Architectural Styles and the Design of Network-based Software
Architectures
http://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 Console
https://apigee.com/console
Referencias
Consumo Servicios Web REST
BIBLIOGRAFÍA
• Creación de páginas web: HTML 5, Celaya Luna, Ainoa -ICB, 2014(Tomado de E-libros,
de la biblioteca virtual de UCN).
• Recio García, J. A. (2016). HTML5, CSS3 y JQuery: curso práctico. Paracuellos de
Jarama, Madrid, RA-MA Editorial (Tomado de E-libros, de la biblioteca virtual de UCN).