Consumo de servicios externos en un formulario
En los formularios también está disponible la configuración del consumos de servicios externos, para ello habrá que tener en cuenta las siguientes consideraciones.
Configurar la invocación
- La invocación al servicio se realiza desde el propio formulario, por tanto será responsabilidad del diseñador del formulario la correcta configuración.
- Lo ideal es contar con la documentación de la API REST para que el diseñador tenga constancia de los métodos que puede utilizar para obtener la respuesta.
- El formato de respuesta es importante que sea lo más sencillo posible, puesto que el parseo del mismo se llevará a cabo mediante javascript en el propio formulario. Si contamos con una respuesta simplificada, menos código será necesario en el formulario para mostrarlo.
Verificar si se necesita autenticación
- En el caso de invocar servicios web que requieran autenticación puede hacerse uso de un parámetro token.
- El encargado de pasar el token de autenticación será el servicio que integra el Webforms, por ejemplo, en el caso de la Sede-e la propia Sede-e.
- El formulario simplemente actuará como pasarela en lo que al token de autenticación se refiere.
- Webforms no tiene ninguna responsabilidad ni conocimiento sobre la autenticación en sí.
- Para obtener más información sobre el envío de un token de autenticación desde el integrador puede consultarse la documentación del Manual del integrador.
Procesar la respuesta del servicio
Es importante destacar que la información que se mande en las respuestas de los servicios web, estén lo más simplificadas posible con el objetivo de poder procesarlas desde el formulario sin que suponga mucha carga de código para este.
- En los formularios contamos con distintos momentos en los que se pueden invocar los servicios:
- Al cargar el formulario.
- Al realizar un evento sobre un campo.
- Mostrar un campo sólo si se cumple una condición. La validación del resultado devuelto por el servicio, será que el campo se muestre o no se muestre.
- Como origen de datos externo.
Ejemplo
A continuación vamos a ver un ejemplo de llamada a una API REST del que se va a obtener una lista de valores que será el origen de datos externo de un campo de tipo desplegable.
Supongamos que el endpoint de consumo es el siguiente: https://api.midominio.org. Que devuelve una respuesta del siguiente tipo:
{
"status":"OK",
"data":[
{
"valor":"004",
"descripcion":"AFGANISTÁN"
},
{
"valor":"008",
"descripcion":"ALBANIA"
},
{
"valor":"010",
"descripcion":"ANTÁRTIDA"
},
{
"valor":"012",
"descripcion":"ARGELIA"
},
...
]
}
CODE
Lo que tendríamos que hacer es:
- Invocar al servicio. En este momento enviaremos el parámetro "token" para la autenticación.
- Procesar la respuesta
- Mapear en el origen de datos externo que queremos mostrar.
$.ajax({
type: 'GET',
url: "https://api.midominio.org/paises",
dataType: 'json',
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
}
}).done(function(response) {
if (response.data) {
resolve({
data : _.map(response.data, function(datum) {
return {
id : datum.valor,
text : datum.descripcion
}
})
});
}})
.error(function() {
resolve(false);
});
JS