Intercambio de Datos Usando JSON/REST

Para probar los servicios de intercambio de datos se recomienda instalar un cliente REST en su navegador. Este cliente puede enviar mensajes SOAP y REST.

Instalar cliente REST para Firefox
Instalar cliente REST para Chrome

Para intercambiar datos dentro de la red Tenoli es posible usar mensajes SOAP o REST. Todos los servicios que se publiquen deben contar con una definición WSDL.

Internamente Tenoli utiliza un adaptador para traducir mensajes XML a JSON, de esta forma es posible trabajar únicamente con REST/JSON. Este adaptador es responsable además de crear los mensajes con los datos requeridos por Tenoli para que puedan ser encaminados en la red. Esto facilita el desarrollo ya que su sistema interno REST no necesita conocer ni manipular los mensajes de Tenoli.

Las pruebas REST que se describen a continuación usan el mismo servicio descrito en la pagina de pruebas basadas en SOAP/XML. Para completar estas pruebas es necesario contar con un servicio de consumo debidamente registrado según se explico en la página de Gestión de Servicios.


1. Adaptador REST/SOAP

Luego de terminar la instalación inicial de la pasarela el adaptador estará instalado y disponible en el puerto 8080. Para iniciar o detener el servicio puede usar los siguientes comandos:  

~# service rest-adapter-service stop;
~# service rest-adapter-service start;

Los archivos de configuración del adaptador estan ubicados en /etc/rest-adapter-service.



2. Consumir Servicios SOAP usando REST

La configuración necesaria para enviar mensajes REST a el servicio SOAP reside en el archivo consumers.properties
Para cada método del servicio SOAP que se desea consultar usando REST deben incluirse al menos los siguientes valores:

N.id=SV.GOB.[Código-Institución-Proveedora].[servicio-remoto].[método].[versión]
N.path=[Ruta para llamada REST]
N.verb=[verbo REST]
N.id.client=SV.GOB.[Código-mi-Institución].[servicio-consulta]

Donde N es un número correlativo del listado de definiciones de métodos.
N.id se refiere al método remoto que se desea consultar.
N.id.client es el servicio de consulta de nuestra pasarela que ya cuenta con acceso al método remoto.
N.path es una ruta arbitraria donde respondera el servicio REST

La configuración completa para ambos métodos publicados en la STPP se muestra a continuación:

0.id=SV.GOB.1001.ejemplo.getRandom.v1
0.path=/pruebas/getRandom/v1/
0.verb=get
0.id.client=SV.GOB.1001.consulta-simple
1.id=SV.GOB.1001.ejemplo.helloService.v1
1.path=/pruebas/helloService/v1/
1.verb=post
1.id.client=SV.GOB.1001.consulta-simple

Para probar el adaptador desde su navegador y su cliente REST puede abrir el siguiente URL que genera un objeto JSON:

GET http://[mi-pasarela]:8080/rest-adapter-service/Consumer/pruebas/getRandom/v1/?Accept=application/json

POST http://[mi-pasarela]:8080/rest-adapter-service/Consumer/pruebas/helloService/v1/?Accept=application/json&name=Pedro

El parámetro ‘Accept’ indica que deseamos recibir un objeto JSON, si se omite este parámetro el sistema regresara un valor XML. Internamente se esta enviando un mensaje con ID generada automáticamente y el usuario ‘anónimo’. Es posible agregar un usuario a la petición para mejorar los registros de accesos al servicio:

http://[mi-pasarela]:8080/rest-adapter-service/Consumer/pruebas/getRandom/v1/?Accept=application/json &X-XRd-UserId=SV12345678


3. Ofrecer Servicios REST usando SOAP

Todos los servicios en la red Tenoli deben contar con un esquema WSDL.Para ofrecer un servicio REST es necesario crear manualmente el esquema WSDL correspondiente para que pueda ser publicado en la red Tenoli. Como ejemplo puede usarse el WSDL del servicio ‘ejemplo’, método ‘getRandom’ versión ‘v1’ publicado en la STPP:

http://[mi-pasarela]/wsdl?xRoadInstance=SV&memberCode=1001&memberClass=GOB&subsystemCode=ejemplo&serviceCode=getRandom&version=v1

Puede editar este archivo WSDL para describir su servicio REST. Asegúrese de asignar un nombre ("targetNamespace") único para su definición, por ejemplo:

targetNamespace="http://api.[institucion].gob.sv/productor"

Una vez editado, su WSDL debe guardarse como provider-gateway.wsdl, junto a los demas archivos de configuración. Luego, edite el archivo provider-gateway.properties y modifique el nombre del WSDL ("targetNamespace") según corresponda, por ejemplo:

namespace.serialize=http://api.minsal.gob.sv/productor
namespace.deserialize=http://api.minsal.gob.sv/productor

En este punto su WSDL ya puede ser leído desde:

http://[mipasarela]:8080/rest-adapter-service/Provider?wsdl

Con esto ya es posible agregar su servicio a nuestra pasarela según las instrucciones de Gestión de Servicios. El siguiente paso es vincular el método o los métodos descritos en su WSDL con su correspondiente servicio REST interno.Para eso, edite el archivo providers.properties y agregue sus servicios. Ejemplo:

0.id=SV.GOB.1001.ejemplo.getListado.v1
0.url=http://[direccion-red-interna]/rest/listado.php

En este ejemplo, su WSDL esta ya agregado bajo el servicio "ejemplo" de su pasarela y "getListado" es uno de los metodos descritos en su WSDL.

Para ejemplos de uso más complejos puede revisar la documentación del adaptador REST.

Logo de Presidencia

Alameda Doctor Manuel Enrique Araujo N.° 5500,
San Salvador, El Salvador, C.A.
Tel. (503) 2248-9000

Derechos de Información 2017.
Secretaria Técnica y Planificación de la Presidencia
República de El Salvador