Inicio > SOA / BPM / WebCenter > Servicios REST: Uso de parámetros en URI y payload

Servicios REST: Uso de parámetros en URI y payload

Muchas veces, al diseñar o usar servicios REST externos, nos encontramos con que, a parte de los parámetros del payload, requieren de parámetros en la URI, como el caso común de versionado de los servicios. Un ejemplo de ello sería el siguiente servicio: http://localhost:7001/empleados/{version}/actualizacion/ donde, a parte de los datos del empleado a actualizar, necesitamos informar de la versión del servicio REST.

La versión 12c del Bus de Oracle nos permite configurar estos servicios destinados a mapear uno de los parámetros de entrada del servicio como parámetro de la cabecera. Con ello ya podremos invocar al servicio correspondiente con el payload adecuado, y el objeto json para la actualización de los datos del empleado no tiene por qué contener el valor de la versión del compuesto.

A lo largo del siguiente ejemplo, iremos descubriendo como mapear estos parámetros y configurar el servicio de forma dinámica.

El primer paso sería la generación de un nuevo proyecto.

Seleccionamos Service Bus Project:

Le pondremos como nombre ServicioRestEjemplo y pulsaremos en Finalizar.

Una vez generado el proyecto, configuraremos el servicio REST al que invocar. Para ello, desde el composite, con botón derecho en External Services generamos un binding REST.

Acto seguido indicamos los datos de este servicio tal como se muestra en la siguiente imagen.

Y añadimos una nueva operación para este servicio REST.

 

Esto nos abrirá otra nueva ventana donde indicaremos el verbo del servicio REST, y los datos de entrada y salida del mismo. Indicando para ellos el tipo de payload. En nuestro ejemplo indicaremos que va a recibir un objeto JSON, y pulsaremos en el botón marcado en rojo para que se abra el constructor que generará el esquema de la petición:

A lo largo de los pasos del constructor iremos indicando los parámetros del servicio, tal como se ve en los siguientes pantallazos:

En este paso hemos indicado un ejemplo del JSON que requiere el servicio, y en el siguiente paso veremos el esquema XSD generado, que corresponde con ese objeto JSON.

Una vez finalizado el constructor, solo nos quedará indicar de donde se saca el valor de la variable “version”, tal como vemos en el siguiente pantallazo:

Para darle un valor a esta variable, pulsamos sobre la casilla Expresión para que nos aparezca el botón del constructor de expresiones (que podemos ver en la imagen en rojo) y pulsamos sobre él.

Esto nos abrirá la siguiente ventana que como vemos, solo nos deja seleccionar un elemento de la request o una propiedad. En nuestro caso, como los datos de versión no vienen en el payload que debemos enviar, indicaremos que lo coja de la propiedad llamada “versionCompuesto”, tal como se ve en la siguiente imagen.

 

Y así quedaría la configuración de la operación REST:

 

Con esto ya tendríamos configurado el binding para consumir el servicio REST externo y solo nos faltaría crear un pipeline para informar de la versión del compuesto en el parámetro que hemos definido para este binding.

Insertamos un nuevo Pipeline:

Y lo enlazamos con el binding del servicio REST quedando configurado así en nuestro composite:

Ahora abrimos el pipeline, y lo configuramos para informar la versión al servicio REST.

Generaremos, mediante varios Assign, las siguientes variables (nombrePropiedad, valorPropiedad, metadata):

NombrePropiedad tomará el valor definido en el servicio REST (versionCompuesto), y en nuestro ejemplo valorPropiedad tomará el valor 1.1:

Con estas dos variables generaremos la variable metadata, que tomará el valor:

<tp:user-metadata name=”{$nombrePropiedad}” value=”{$valorPropiedad}”/>

Por último, insertaremos la variable metadata en el outbound mediante un Insert, tal como se muestra:

De esta manera, nuestro pipeline quedará así:

Con esto habremos indicado el parámetro versión sin necesidad de incluirlo en el payload del servicio REST, y solo deberemos ejecutar este Pipeline con los datos requeridos por el servicio REST y ver como invoca al servicio con la versión 1.1.

 

  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: