SlideShare a Scribd company logo
1 of 23
REST Web Services en GeneXus Ing. Sabrina Juárez sjuarez@artech.com.uy
Agenda
Por qué REST? Optimización de tráfico Cacheable Accesible a cualquier cliente HTTP  Claro caso de uso: Backend de aplicaciones para SmartDevices P o r  q u é   R E S T
Quées REST? Exponerrecursos en la web en un formatoestándar:  XML, Json.. Qu é  e s R E S T …. JSON XML
…Invocando un servicio REST Qu é  e s R E S T
RESTful Web Services Sintáxis universal para identificar los recursos (URI) Definición de unarepresentación del estado MIME TYPE: XML, Json.. Interfaz Uniforme(GET, POST, PUT, DELETE) Qu é  e s R E S T
Analogía CRUD Qu é  e s R E S T
REST a la luz de GeneXus Business Components Insert, Read, Update, Delete Data Providers Read R E S T e n GENE XUS
Ejemplo Proveer una lista de recursos (con filtros) Lista de Productos Exponer un recurso para modificación Ingreso de orden de compras R E S T e n GENE XUS
R E S T e n GENE XUS Lista de Entidades
R E S T e n GENE XUS Lista de Entidades / Entidad por PK
Lista de Entidades por página R E S T e n GENE XUS
Entidad por Clave Foránea R E S T e n GENE XUS
REST en GENEXUS Lista de Entidades
Cliente de servicio REST(Read) R E S T E n GENE XUS
R E S T e n GENE XUS Ejemplo: Exponer un  Recurso para modificación
video R E S T E n GENE XUS
Cliente de servicio REST(Create) R E S T E n GENE XUS
Transacción sin interfaz expuesta como REST ,[object Object]
Control de concurrenciaR E S T e n GENE XUS
Casos de Uso Aplicaciones  backend para Smart Devices Integración de Aplicaciones GX Integración de externos con aplicaciones GX REST R E S T e n GENE XUS
Conclusión Tecnología: Apuesta a HTTP Casos de uso claros GeneXus: Proveerservicios REST a partir de Business Components y Data Providers C ONC L US I ÓN

More Related Content

What's hot

Integrating Relational Databases with the Semantic Web: A Reflection
Integrating Relational Databases with the Semantic Web: A ReflectionIntegrating Relational Databases with the Semantic Web: A Reflection
Integrating Relational Databases with the Semantic Web: A ReflectionJuan Sequeda
 
Basic Crud In Django
Basic Crud In DjangoBasic Crud In Django
Basic Crud In Djangomcantelon
 
Intro to web scraping with Python
Intro to web scraping with PythonIntro to web scraping with Python
Intro to web scraping with PythonMaris Lemba
 
Scaling from zero to millions of users
Scaling from zero to millions of usersScaling from zero to millions of users
Scaling from zero to millions of usersAmazon Web Services
 
Front-end development introduction (HTML, CSS). Part 1
Front-end development introduction (HTML, CSS). Part 1Front-end development introduction (HTML, CSS). Part 1
Front-end development introduction (HTML, CSS). Part 1Oleksii Prohonnyi
 

What's hot (10)

Html
HtmlHtml
Html
 
Integrating Relational Databases with the Semantic Web: A Reflection
Integrating Relational Databases with the Semantic Web: A ReflectionIntegrating Relational Databases with the Semantic Web: A Reflection
Integrating Relational Databases with the Semantic Web: A Reflection
 
Basic Crud In Django
Basic Crud In DjangoBasic Crud In Django
Basic Crud In Django
 
React JS
React JSReact JS
React JS
 
Intro to web scraping with Python
Intro to web scraping with PythonIntro to web scraping with Python
Intro to web scraping with Python
 
Java script -23jan2015
Java script -23jan2015Java script -23jan2015
Java script -23jan2015
 
Introduction to HTML
Introduction to HTMLIntroduction to HTML
Introduction to HTML
 
Scaling from zero to millions of users
Scaling from zero to millions of usersScaling from zero to millions of users
Scaling from zero to millions of users
 
Five API Styles
Five API StylesFive API Styles
Five API Styles
 
Front-end development introduction (HTML, CSS). Part 1
Front-end development introduction (HTML, CSS). Part 1Front-end development introduction (HTML, CSS). Part 1
Front-end development introduction (HTML, CSS). Part 1
 

Viewers also liked

Neurociencia aplicada al desarrollo con GeneXus - Gustavo Tejera
Neurociencia aplicada al desarrollo con GeneXus - Gustavo TejeraNeurociencia aplicada al desarrollo con GeneXus - Gustavo Tejera
Neurociencia aplicada al desarrollo con GeneXus - Gustavo TejeraGeneXus
 
Generadores Web en Salto - Claudia Murialdo
Generadores Web en Salto - Claudia MurialdoGeneradores Web en Salto - Claudia Murialdo
Generadores Web en Salto - Claudia MurialdoGeneXus
 
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y SaltoLaboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y SaltoGeneXus
 
Curso iOS
Curso iOSCurso iOS
Curso iOSPlatzi
 
Curso Swift
Curso SwiftCurso Swift
Curso SwiftPlatzi
 
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...GeneXus
 
Curso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCurso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCarlos Azaustre
 
GeneXus Apps UI / UX Kit - Gabriel Simonet
GeneXus Apps UI / UX Kit - Gabriel SimonetGeneXus Apps UI / UX Kit - Gabriel Simonet
GeneXus Apps UI / UX Kit - Gabriel SimonetGeneXus
 
Construya las aplicaciones del futuro ¡hoy!
Construya las aplicaciones del futuro ¡hoy!Construya las aplicaciones del futuro ¡hoy!
Construya las aplicaciones del futuro ¡hoy!GeneXus
 
Metodologías de desarrollo ágiles: Scrum, XP
Metodologías de desarrollo ágiles: Scrum, XPMetodologías de desarrollo ágiles: Scrum, XP
Metodologías de desarrollo ágiles: Scrum, XPejordi
 
iOS: Una Experiencia Xcode
iOS: Una Experiencia XcodeiOS: Una Experiencia Xcode
iOS: Una Experiencia XcodeCarlos Leon
 
Gestión Ágil de Proyectos: Scrum, Kanban y XP
Gestión Ágil de Proyectos: Scrum, Kanban y XPGestión Ágil de Proyectos: Scrum, Kanban y XP
Gestión Ágil de Proyectos: Scrum, Kanban y XPJose Antonio Dorado
 
Planificacion De Proyectos De Software
Planificacion De Proyectos De SoftwarePlanificacion De Proyectos De Software
Planificacion De Proyectos De SoftwareIván Sanchez Vera
 
Ingenieria De Software Para Dummies
Ingenieria De Software Para DummiesIngenieria De Software Para Dummies
Ingenieria De Software Para DummiesSorey García
 
Reglas del fútbol
Reglas del fútbolReglas del fútbol
Reglas del fútbolEdwin Cuenca
 

Viewers also liked (20)

Neurociencia aplicada al desarrollo con GeneXus - Gustavo Tejera
Neurociencia aplicada al desarrollo con GeneXus - Gustavo TejeraNeurociencia aplicada al desarrollo con GeneXus - Gustavo Tejera
Neurociencia aplicada al desarrollo con GeneXus - Gustavo Tejera
 
Diploma Backend Developer
Diploma Backend DeveloperDiploma Backend Developer
Diploma Backend Developer
 
Diploma programacion-android
Diploma programacion-androidDiploma programacion-android
Diploma programacion-android
 
Generadores Web en Salto - Claudia Murialdo
Generadores Web en Salto - Claudia MurialdoGeneradores Web en Salto - Claudia Murialdo
Generadores Web en Salto - Claudia Murialdo
 
Diploma google-fullstack
Diploma google-fullstackDiploma google-fullstack
Diploma google-fullstack
 
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y SaltoLaboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
 
Curso iOS
Curso iOSCurso iOS
Curso iOS
 
Curso Swift
Curso SwiftCurso Swift
Curso Swift
 
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...
 
Curso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCurso de Desarrollo Web de Platzi
Curso de Desarrollo Web de Platzi
 
GeneXus Apps UI / UX Kit - Gabriel Simonet
GeneXus Apps UI / UX Kit - Gabriel SimonetGeneXus Apps UI / UX Kit - Gabriel Simonet
GeneXus Apps UI / UX Kit - Gabriel Simonet
 
Construya las aplicaciones del futuro ¡hoy!
Construya las aplicaciones del futuro ¡hoy!Construya las aplicaciones del futuro ¡hoy!
Construya las aplicaciones del futuro ¡hoy!
 
Metodologías de desarrollo ágiles: Scrum, XP
Metodologías de desarrollo ágiles: Scrum, XPMetodologías de desarrollo ágiles: Scrum, XP
Metodologías de desarrollo ágiles: Scrum, XP
 
Modelos de enseñanza
Modelos de enseñanzaModelos de enseñanza
Modelos de enseñanza
 
Modelos de Desarrollo de Software - INF162 - 2017
Modelos de Desarrollo de Software - INF162 - 2017Modelos de Desarrollo de Software - INF162 - 2017
Modelos de Desarrollo de Software - INF162 - 2017
 
iOS: Una Experiencia Xcode
iOS: Una Experiencia XcodeiOS: Una Experiencia Xcode
iOS: Una Experiencia Xcode
 
Gestión Ágil de Proyectos: Scrum, Kanban y XP
Gestión Ágil de Proyectos: Scrum, Kanban y XPGestión Ágil de Proyectos: Scrum, Kanban y XP
Gestión Ágil de Proyectos: Scrum, Kanban y XP
 
Planificacion De Proyectos De Software
Planificacion De Proyectos De SoftwarePlanificacion De Proyectos De Software
Planificacion De Proyectos De Software
 
Ingenieria De Software Para Dummies
Ingenieria De Software Para DummiesIngenieria De Software Para Dummies
Ingenieria De Software Para Dummies
 
Reglas del fútbol
Reglas del fútbolReglas del fútbol
Reglas del fútbol
 

Similar to 0041 rest web_services_en_genexus

Web services restful con JAX-RS
Web services restful con JAX-RSWeb services restful con JAX-RS
Web services restful con JAX-RSVortexbird
 
12.android servicios web
12.android   servicios web12.android   servicios web
12.android servicios webguidotic
 
13-Unidad 3. WebServices-3.3. Inicio de Proyecto (Desarrollo)
13-Unidad 3. WebServices-3.3. Inicio de Proyecto (Desarrollo)13-Unidad 3. WebServices-3.3. Inicio de Proyecto (Desarrollo)
13-Unidad 3. WebServices-3.3. Inicio de Proyecto (Desarrollo)Luis Fernando Aguas Bucheli
 
Esto es todo sobre los servicios Desarrollo de Aplicaciones Personalizadas pa...
Esto es todo sobre los servicios Desarrollo de Aplicaciones Personalizadas pa...Esto es todo sobre los servicios Desarrollo de Aplicaciones Personalizadas pa...
Esto es todo sobre los servicios Desarrollo de Aplicaciones Personalizadas pa...Andrés Iturralde
 
5.2. api-rest
5.2. api-rest5.2. api-rest
5.2. api-restxavazque2
 
Servicios Rest con Jersey
Servicios Rest con Jersey Servicios Rest con Jersey
Servicios Rest con Jersey Vortexbird
 
Novedades en Desarrollo en SharePoint 2013
Novedades en Desarrollo en SharePoint 2013Novedades en Desarrollo en SharePoint 2013
Novedades en Desarrollo en SharePoint 2013Juan Carlos Gonzalez
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con RESTAlex Puig
 
Servicios web
Servicios webServicios web
Servicios webUTPL
 
Servicios web
Servicios webServicios web
Servicios webUTPL
 
Servicios Web Rest con Spring MVC
Servicios Web Rest con Spring MVCServicios Web Rest con Spring MVC
Servicios Web Rest con Spring MVCVortexbird
 
Enterprise Service Bus y API Managers
Enterprise Service Bus y API ManagersEnterprise Service Bus y API Managers
Enterprise Service Bus y API ManagersDario Herrera
 
01 Ext Js Introduccion
01 Ext Js   Introduccion01 Ext Js   Introduccion
01 Ext Js IntroduccionMayer Horna
 

Similar to 0041 rest web_services_en_genexus (20)

Web services restful con JAX-RS
Web services restful con JAX-RSWeb services restful con JAX-RS
Web services restful con JAX-RS
 
12.android servicios web
12.android   servicios web12.android   servicios web
12.android servicios web
 
Scom5 Ws Ii
Scom5 Ws IiScom5 Ws Ii
Scom5 Ws Ii
 
13-Unidad 3. WebServices-3.3. Inicio de Proyecto (Desarrollo)
13-Unidad 3. WebServices-3.3. Inicio de Proyecto (Desarrollo)13-Unidad 3. WebServices-3.3. Inicio de Proyecto (Desarrollo)
13-Unidad 3. WebServices-3.3. Inicio de Proyecto (Desarrollo)
 
Esto es todo sobre los servicios Desarrollo de Aplicaciones Personalizadas pa...
Esto es todo sobre los servicios Desarrollo de Aplicaciones Personalizadas pa...Esto es todo sobre los servicios Desarrollo de Aplicaciones Personalizadas pa...
Esto es todo sobre los servicios Desarrollo de Aplicaciones Personalizadas pa...
 
5.2. api-rest
5.2. api-rest5.2. api-rest
5.2. api-rest
 
Java Web Services - REST
Java Web Services - RESTJava Web Services - REST
Java Web Services - REST
 
Servicios Rest con Jersey
Servicios Rest con Jersey Servicios Rest con Jersey
Servicios Rest con Jersey
 
Rest Conf Rails
Rest Conf RailsRest Conf Rails
Rest Conf Rails
 
Novedades en Desarrollo en SharePoint 2013
Novedades en Desarrollo en SharePoint 2013Novedades en Desarrollo en SharePoint 2013
Novedades en Desarrollo en SharePoint 2013
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios Web
Servicios WebServicios Web
Servicios Web
 
Paper ieee
Paper ieeePaper ieee
Paper ieee
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios Web Rest con Spring MVC
Servicios Web Rest con Spring MVCServicios Web Rest con Spring MVC
Servicios Web Rest con Spring MVC
 
Enterprise Service Bus y API Managers
Enterprise Service Bus y API ManagersEnterprise Service Bus y API Managers
Enterprise Service Bus y API Managers
 
T final modulo_1
T final modulo_1T final modulo_1
T final modulo_1
 
01 Ext Js Introduccion
01 Ext Js   Introduccion01 Ext Js   Introduccion
01 Ext Js Introduccion
 

More from GeneXus

After Chatbots Yo (Ro) Bots
After Chatbots Yo (Ro) BotsAfter Chatbots Yo (Ro) Bots
After Chatbots Yo (Ro) BotsGeneXus
 
Live Editing in Action
Live Editing in ActionLive Editing in Action
Live Editing in ActionGeneXus
 
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...GeneXus
 
¿Pensando en implementar un sistema de gestión integral en su organización?
¿Pensando en implementar un sistema de gestión integral en su organización?¿Pensando en implementar un sistema de gestión integral en su organización?
¿Pensando en implementar un sistema de gestión integral en su organización?GeneXus
 
K2B Tools el compañero de viaje ideal hacia el futuro
K2B Tools el compañero de viaje ideal hacia el futuroK2B Tools el compañero de viaje ideal hacia el futuro
K2B Tools el compañero de viaje ideal hacia el futuroGeneXus
 
Sd y Plataformas
Sd y PlataformasSd y Plataformas
Sd y PlataformasGeneXus
 
PXTools: Nuevo generador y nuevos controles responsivos
PXTools: Nuevo generador y nuevos controles responsivosPXTools: Nuevo generador y nuevos controles responsivos
PXTools: Nuevo generador y nuevos controles responsivosGeneXus
 
APPlícate: Aplicaciones móviles para el desarrollo de la industria
APPlícate: Aplicaciones móviles para el desarrollo de la industriaAPPlícate: Aplicaciones móviles para el desarrollo de la industria
APPlícate: Aplicaciones móviles para el desarrollo de la industriaGeneXus
 
GeneXus 4 Students
GeneXus 4 StudentsGeneXus 4 Students
GeneXus 4 StudentsGeneXus
 
La importancia de ser responsive
La importancia de ser responsiveLa importancia de ser responsive
La importancia de ser responsiveGeneXus
 
K2B: El ERP nativo para el mundo GeneXus
K2B: El ERP nativo para el mundo GeneXusK2B: El ERP nativo para el mundo GeneXus
K2B: El ERP nativo para el mundo GeneXusGeneXus
 
GeneXus 15 (Salto)
GeneXus 15 (Salto)GeneXus 15 (Salto)
GeneXus 15 (Salto)GeneXus
 
GeneXus Cloud Deployment Services. El camino a la nube.
GeneXus Cloud Deployment Services. El camino a la nube.GeneXus Cloud Deployment Services. El camino a la nube.
GeneXus Cloud Deployment Services. El camino a la nube.GeneXus
 
LigaMX con GeneXus: De 0 a 1.700.000 de usuarios
LigaMX con GeneXus: De 0 a 1.700.000 de usuariosLigaMX con GeneXus: De 0 a 1.700.000 de usuarios
LigaMX con GeneXus: De 0 a 1.700.000 de usuariosGeneXus
 
Innovando con GeneXus y SAP
Innovando con GeneXus y SAPInnovando con GeneXus y SAP
Innovando con GeneXus y SAPGeneXus
 
Going mobile
Going mobileGoing mobile
Going mobileGeneXus
 
Audit+: La mejor forma de auditar KB’s GeneXus
Audit+: La mejor forma de auditar KB’s GeneXusAudit+: La mejor forma de auditar KB’s GeneXus
Audit+: La mejor forma de auditar KB’s GeneXusGeneXus
 
WW+, SD+ y Audit+: Potencie GeneXus la Suite Plus
WW+, SD+ y Audit+: Potencie GeneXus la Suite PlusWW+, SD+ y Audit+: Potencie GeneXus la Suite Plus
WW+, SD+ y Audit+: Potencie GeneXus la Suite PlusGeneXus
 
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...GeneXus
 
Laboratorio GXserver (cont)
Laboratorio GXserver (cont)Laboratorio GXserver (cont)
Laboratorio GXserver (cont)GeneXus
 

More from GeneXus (20)

After Chatbots Yo (Ro) Bots
After Chatbots Yo (Ro) BotsAfter Chatbots Yo (Ro) Bots
After Chatbots Yo (Ro) Bots
 
Live Editing in Action
Live Editing in ActionLive Editing in Action
Live Editing in Action
 
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
 
¿Pensando en implementar un sistema de gestión integral en su organización?
¿Pensando en implementar un sistema de gestión integral en su organización?¿Pensando en implementar un sistema de gestión integral en su organización?
¿Pensando en implementar un sistema de gestión integral en su organización?
 
K2B Tools el compañero de viaje ideal hacia el futuro
K2B Tools el compañero de viaje ideal hacia el futuroK2B Tools el compañero de viaje ideal hacia el futuro
K2B Tools el compañero de viaje ideal hacia el futuro
 
Sd y Plataformas
Sd y PlataformasSd y Plataformas
Sd y Plataformas
 
PXTools: Nuevo generador y nuevos controles responsivos
PXTools: Nuevo generador y nuevos controles responsivosPXTools: Nuevo generador y nuevos controles responsivos
PXTools: Nuevo generador y nuevos controles responsivos
 
APPlícate: Aplicaciones móviles para el desarrollo de la industria
APPlícate: Aplicaciones móviles para el desarrollo de la industriaAPPlícate: Aplicaciones móviles para el desarrollo de la industria
APPlícate: Aplicaciones móviles para el desarrollo de la industria
 
GeneXus 4 Students
GeneXus 4 StudentsGeneXus 4 Students
GeneXus 4 Students
 
La importancia de ser responsive
La importancia de ser responsiveLa importancia de ser responsive
La importancia de ser responsive
 
K2B: El ERP nativo para el mundo GeneXus
K2B: El ERP nativo para el mundo GeneXusK2B: El ERP nativo para el mundo GeneXus
K2B: El ERP nativo para el mundo GeneXus
 
GeneXus 15 (Salto)
GeneXus 15 (Salto)GeneXus 15 (Salto)
GeneXus 15 (Salto)
 
GeneXus Cloud Deployment Services. El camino a la nube.
GeneXus Cloud Deployment Services. El camino a la nube.GeneXus Cloud Deployment Services. El camino a la nube.
GeneXus Cloud Deployment Services. El camino a la nube.
 
LigaMX con GeneXus: De 0 a 1.700.000 de usuarios
LigaMX con GeneXus: De 0 a 1.700.000 de usuariosLigaMX con GeneXus: De 0 a 1.700.000 de usuarios
LigaMX con GeneXus: De 0 a 1.700.000 de usuarios
 
Innovando con GeneXus y SAP
Innovando con GeneXus y SAPInnovando con GeneXus y SAP
Innovando con GeneXus y SAP
 
Going mobile
Going mobileGoing mobile
Going mobile
 
Audit+: La mejor forma de auditar KB’s GeneXus
Audit+: La mejor forma de auditar KB’s GeneXusAudit+: La mejor forma de auditar KB’s GeneXus
Audit+: La mejor forma de auditar KB’s GeneXus
 
WW+, SD+ y Audit+: Potencie GeneXus la Suite Plus
WW+, SD+ y Audit+: Potencie GeneXus la Suite PlusWW+, SD+ y Audit+: Potencie GeneXus la Suite Plus
WW+, SD+ y Audit+: Potencie GeneXus la Suite Plus
 
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...
 
Laboratorio GXserver (cont)
Laboratorio GXserver (cont)Laboratorio GXserver (cont)
Laboratorio GXserver (cont)
 

0041 rest web_services_en_genexus

Editor's Notes

  1. Para empezarmencionarles un datointeresante.Los REST webservices son unaalternativa a SOAP, y cadacadavezmasservicios en internet hoyusan REST. Para citaralgunosejemplosconocidos, tenemos Twitter, Facebook, Flickr, deliciuous, los servicios de Yahoo y AmazonCloud Computing tambien se basa en APIs REST para brindar sus funcionalidades. Para hacer el deploy de aplicaciones tanto a Windows Azure como a Amazon se utilizan llamadas a servicios REST. Para monitorear el estado de mi aplicación y temas de configuración se hacen a traves de servicios Rest.Estos dos proveedores (Azure y Amazon) también proveen servicios de storage, esta comunicación se realiza a través de servicios REST tambien.Seguramentenosveamos en la situacion de tenerqueintegrarnos a aplicacionesqueproveen REST.Porotrolado, esposiblequequetengamos el requerimiento de quenuestrosserviciossean Restful.En estemarco, esque GX ha adoptadoestatecnologia, mi objetivo en estacharlaesjustamentemostrarlescomo GX aporta un valor agregado en el hecho de queademás de ser muyfacilhacer un servicio REST en GX, todo el conocimiento de negocios de la KB se incorpora de maneraautomatica en los servicios REST hechos con GX.
  2. Cuales la necesidad / problemaquetenemospara la cual Rest esunasolución.Abocarnos REST en GXExtraerconclusiones.
  3. Como les decia, REST es un estilo de diseño de webservices, y constituye una alternativa a SOAP.REST tiene una serie de caracteristicas que vamos a ver mas adelante, que justamente hacen que sea la mejor solucion para ciertos casos en los cuales hay que resolverlos con webservices.Esos casos son aquellos en los que la optimizacion de trafico es esencial y parte de la solucion.REST brinda la posibilidad de que la informacion sea cacheable, y accesible a cualquier cliente HTTP, es decir no se precisan de APIS o librerias particulares en los clientes.En el caso de los generadores para SmartDevices que vamos a liberar en Ev2, se optó por REST como solucion para el backend de dichas aplicaciones, es decir, los clientes que ejecutan en los dispositivos se alimentan de servicios REST. Esto es por que la conexión en estos aparatos puede ser mas limitada.
  4. Lo quequeremoshaceresexponerdatos de unaaplicación o lo quevamos a llamar “recursos” o entidades, en la web, con unasalida con un formatoestándar, paraque sea interpretable por un programaqueejecutesobrecualquierplataforma o framework, e inclusosobrecualquiercliente HTTP (inclusodesde un telefonocelular).
  5. Me parecio que la mejor manera de contarles lo que es REST es mostrarles como invoco al servicio REST que provee la lista de productos.En base a lo que hablamos, vamos a suponer que lo que quiero es exponer la lista de productos de mi empresa, para que cualquier cliente HTTP pueda acceder a ella.Para invocarlo solo hago un GET al servicio (comopuedenver en la imagen, se trata del header del request HTTP)Luegopodemosver el response HTTP del servicio.Es solamente un HTTP Response, que trae en el cabezal el status code y demas datos, y en el cuerpo la lista de productos, en este caso en formato Json.Veanque el mensaje no lleva envelopes (como en el caso de SOAP).La respuestatiene el producId, la descripcion, y una URI queindicadondeobtener el detalle de cadaproducto. Esta URI sirvepara “descubrir” comolocalizarotrosrecursos.
  6. Entonces, para ir a una definición formal, REST es un estilo de arquitectura de software (no es como SOAP un protocolo), es un modelo orientado a recursos que va directo sobre HTTP.Cuando un webservice es Restful?Cuando se van a cumplir una serie de condiciones.Básicamente se va a cumplir que cada URL es la representación de un objeto, al que vamos a llamar recurso.Cada recurso se asocia a una URI, y cada recurso tienen n representaciones posibles, puede ser XML, Json. Además REST es un modelo cliente servidor sin estado. No se mantiene el estado en el servidor.El estado del recurso viaja en la representación. También en la representación se incluye la referencia a otros recursos relacionados, como vimos en la lista de productos, que estaba la referencia a cada producto en particular.También se caracteriza por tener una interfaz uniforme, es decir, un conjunto de operaciones bien definidas que voy a poder ejecutar sobre los recursos – métodos HTTP GET, POST, PUT, DELETE.
  7. Con frecuencia estas operaciones se equiparan a las operaciones CRUD que se requieren para la persistencia de datos.Dado un recurso, un POST HTTP a su representación se puede equiparar con un create sobre la DB.Un GET HTTP se corresponde a un Read, un PUT HTTP sobre la representación se puede equiparar a un UPDATE sobre la DB, y un DELETE HTTP con un Delete sobre la DB.Bien, hasta aca hemos hablado de que es REST y que podemos resolver con REST.
  8. En GeneXus tenemos la posibilidad de crear automáticamente servicios REST a partir de transacciones que sean Business Components y a partir de Data Providers.Es decir que el metodoCreate del BC podrá ser accedido mediante el método POST de HTTP, el metodoRead del BC a traves de un GET HTTP, el Update del BC a traves de un PUT HTTP, y el delete a traves del delete HTTP.Lo interesante de esto es que se va a ejecutar toda la businesslogic del BC cuando se le invoque, sea cual se el metodo HTTP con el cual se invoque.Los data providers son servicios REST de lectura.
  9. Entonces, para que me sirve todo esto?Vamos a suponer que tenemos varias aplicaciones que corren en diferentes webapplications (o modulos), que queremos integrar, es decir, hacer que dialoguen a traves de servicios.Queremos resolver dos cosas..Acceder al catalogo de precios de los productos y habilitar la solicitud de ordenes de compras via web.Entonces, en mi kb tengo una transaccion de products otra de ordenes de compras, y customers.
  10. Voy a empezar por exponer el recurso “lista de productos” como servicio REST.La manera de crear un servicio REST es muy sencilla, Mi transaccion debe ser Business Component, Y debo especificar la propiedad Expose as webservice – REST del Business Component.
  11. Ok, entonces dado el servicio anterior, que se llama Product, puedoinvocarlo al mismohaciendo un GET HTTP, paraobtener lo siguiente,La lista de productos, dondetenemos el ID, el desc attribute – quees la descripcion – y una URI, quesirveparalocalizar el detalle del producto.Esto lo muestroaqui en formato XML, pero sin ninguncambio, solo con un parametroadicional se obtiene lo mismo en formato JSON.Tambien se puedeobtenermediante el mismo BC queestaexpuestocomo REST, el detalle del producto, haciendo un GET deProduct/PKEn la imagen lo tenemos en formato XML y Json.Veanqueprogramaresteservicioimplicariaarmar el response HTTP con el XML y/o el Json, segununaestructurapreestablecida. Masdificilaunseriaejecutarreglas de negocios de maneraprogramatica, en vez de aprovecharlasreglasquetiene el BC.
  12. Un ejemplointeresanteesque se puedeobtenertambien la lista de productosporpagina, esdecir, haciendo un GET al servicio Product pasandocomoparametro la pagina y la cantidad de registros, me devuelve la paginacorespondiente.
  13. Tambienesposiblefiltrarpor la FK. Porejemplo, en la transaccion de Orders el ProductIdes clave foranea. Es posiblepedirmediante un GET lasordenes de compras de tal o cualproducto.Esto se hacemediante un GET HTTP a Product/<productoId>/Orders
  14. Ahoravamos a ver un caso en el cual me interesafiltrarporprecio y descripcion, y ademásordenarpor ambos en eseorden.Este DP me permite listar los productos con un Precio menor a &productPrice, y me devuelve la lista de los mismos ordenados por Precio. Si el &productPrice es vacio muestra la lista de Productos ordenados por Descripción.Para invocarlo, tendriaquehacer un GET http al servicio, quelleva el nombre del dataprovider, pasandocomoparametrodescripcion y precio.Veanqueprogramaresteservicioimplicariaarmar el response HTTP con el XML y/o el Json, segununaestructurapreestablecida. Hastaaquivimosejemplos de comopodemoshacerservicios REST paraacceder a ellosmediante un GET.Les voy a mostrar a continuacioncomoes un clienteGeneXuspara un servicio REST como el de los ejemplos…
  15. Por ahora el cliente se programa de esta manera. Es solamente usar una variable de tipo HTTPClient para establecer la conexión al host donde reside el servicio, luego se hace un GET al servicio.La respuesta vendra en formato Json o XML, dependiendo de eso se puede hacer fromJson o fromXML para cargar la informacion en un SDT. Eso es todo.
  16. Ws REST quepermite el ingreso de unaorden de compras.En estecasotenemosunatransaccion de nombre Orders quetambienpretendemosexponercomoservicio REST, estavezparapoderingresarunaorden en la base de datos.Veanque la orden de comprastiene el CustomerId, ProductId, ProductPrice, Qty, y una formula queesPrecioporCantidad.Tambientenemosunaregla error siprecio del productoes mayor que 100.
  17. Enesteejemplovamos a vercomoingresarunaorden de compras a traves de REST.En estecasotenemos un servicio REST hecho en Ruby, corriendosobreWebrick, y un cliente Java corriendo en Tomcat.Este ejemploreune los dos casosquehemosestadohablando, es un webpanelquemediante un GET ejecuta el servicioquetrae la lista de productos. Puse en el medio de la comunicacion el tcptrace, parapoderver el dialogo entre cliente y servidor.En otrocasovamos a intentarhacer un POST a unaorden de compras con un producto con valor mayor a 100. me interesaquepuedanver la respuesta del servicio, que en el status code indica de un error, y que la recuperamosparamostrar el feedback al usuario.
  18. Este es el clientequehace el POST al servicio Orders.Se trataigualque en el caso anterior de definiruna variable de tipoHTTPClientparaestablecer la conexion al servicio.Luego en un SDT con la estructura de la order guardo la informacion de la misma, Customer, ProductoFecha y cantidad. Mando al request HTTP la orden de compras, luegohago el POST al servicio.En la vueltaanalizo el status code y proceso la respuesta.En el procesamiento de la respuesta, vamos a tener el resultado de la ejecucion de lasreglas de negocios, paratomaracciones.
  19. Resumiendo, tengo la posibilidad de invocar a la transaccion sin interfaz, expuestacomo un servicio REST.Esoimplica el disparo de lasreglas de negociosqueencapsula.En particular, para el control de concurrencia se lleva a caboun dialogoseudoconversacionalcomo en el caso de lastransacciones web con interfaz. Para hacer un update en la base de datos se debehacer un GET previamente, y luegocuando se efectua el update se controlaque no hayahabidocambios entre el GET y el save. Esto se resuelveinternamente.
  20. Entonces,parairconcluyendo, REST esunaalternativa a SOAP para el diseño de web services, cuyapropuestaesreducir lo masposible el traficoqueviajapor la red, siendo el contenidoqueviajapor la red bastantemaslivianoque SOAP y mucho masfacil de cachear.Estoes ideal paracasos en los que el ancho de bandaeslimitado, como en el caso de los telefonoscelulares, fueporesoque se optóporestosservicioscomo backend paralasaplicaciones de dispositivosmoviles.Otrocaso de usoescomoestuvimosviendo en el ejemplo, la integración de aplicacionesGeneXus, usandoservicios REST GX y consumidores GX, aca lo que se puededestacarcomoventajaimportantees la sencillez de la solución.Otrocasoes el de integración con externos, a lo cual no noshemosabocado en estacharla. Los servicios REST GX pueden ser consumidos con cualquiercliente HTTP externo.En cuanto a consumirdesde GX servicios de terceros, en gralquienesproveen el serviciodisponen de APIs paraacceder a ellos, por lo cual lo podemoshacer a traves de external objects.
  21. Conclusión Rest es más una vieja filosofía que una nueva tecnología. La filosofía REST apuesta al protocolo HTTP como base fundamental para resolver casos de integración, sobre todo apuesta a resolver casos críticos en los cuales el ancho de banda es limitado. “Rest no es una cura para todo”, hay casos de aplicación mas claros que otros, Tenemos claros casos de uso que hemos estado viendo, pero en definitiva es una tecnologia que marca una importante curva de crecimiento.En este marco, GeneXus nos permite abordar el tema de proveer servicios REST de una manera sencilla -sin complicarnos por los detalles técnicos que impone REST y abocarnos a programar las reglas de negocios.Esto hoy lo pueden probar en Ruby en Ev1, y se a liberar en Ev2 para java y NET.