Haciendo la transición de Servicios Web SOAP a Servicios Web REST con GeneXus


En el desarrollo de software moderno, la adopción de servicios web RESTful ha ganado mucha popularidad debido a su simplicidad y eficiencia. Sin embargo, muchos sistemas legados aún utilizan servicios web SOAP. En este post, explicaremos cómo hacer la transición de un servicio web SOAP a un servicio web REST en GeneXus, permitiendo que ambos servicios coexistan durante un periodo de transición.

Paso 1: Analizar el Servicio SOAP Existente y separar interfaz de la lógica. 

Antes de iniciar la transición, es crucial entender el servicio SOAP existente. Esto incluye:

  • Identificar las operaciones del servicio SOAP.
  • Revisar los contratos de servicio (WSDL).
  • Entender las estructuras de datos (tipos de mensajes, esquemas XML).
Una vez realizado esto, conviene separar la interfaz de la lógica de la siguiente manera, suponiendo que el objeto se llama ServicioWEB y tiene la variable &ParmIN como parámetro de entrada y &ParmOUT como parámetro de salida. 

ServicioWEB es un objeto procedure que tiene CALL PROTOCOL = SOAP y es main y tiene la regla

parm(IN:&ParmIN, OUT:&ParmOUT);

Lo divido en dos objetos

ServicioWEB(&ParmIN,&ParmOUT)     //main, call protocol = soap
    hace un call a ServicioWEB_core(&ParmIN,&ParmOUT)  //no main, call protocol = internal

Entonces queda ServiciosWEB con la interfaz SOAP y toda la lógica queda en el ServicioWEB_core()

Paso 2: Crear un Nuevo Objeto API REST

En GeneXus, puedes crear un objeto API REST que refleje las operaciones de tu servicio SOAP.

  1. Crear un Nuevo Objeto API y poner metodo

    • Agrega métodos al objeto API que correspondan a los métodos del servicio SOAP. Por ejemplo:
MyRestAPI{    

[RestMethod(POST)]  //elegir el metodo GET/POST/PUT/DELETE
ServicioWEBRest(IN:&ParmIN, OUT:&ParmOUT)     => ServicioWEB_core(&ParmIN,&ParmOuT);
 }

Paso 3: Probar el servicio SOAP y REST. 

Hacer en Postman o alguna herramienta parecida lo necesario para consumir ambos servicios y asegurarse que devuelven lo mismo, en cualquiera de los dos protocolos.  También puede usarse GXTest que tiene lo necesario para testear servicios. 

Que ventajas tiene este enfoque?

Lógica Centralizada. 

Durante el periodo que quienes consumen los servicios adaptan sus sistemas, pueden usarse tanto los servicios REST como SOAP con la garantía que el resultado va a ser el mismo.  Al cambiar el objeto ServicioWEB_core() van a cambiar ambos servicios. 

Manejo de Seguridad

Los servicios REST pueden configurarse para la utilización de GAM, con lo cual se pueden hacer servicios seguros con mayor facilidad. 

Mejor manejo de Errores. 

En los servicios REST se tienen herramientas adecuada para la devolución de errores que con SOAP es algo mas difícil 

Conclusión

Esta es una forma sencilla y controlable de hacer una transición de los servicios provistos por nuestro sistema desde SOAP a REST utilizando los objeto API. 

Comentarios

Entradas más populares de este blog

Aplicación monolítica o distribuida?

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.