Custom JavaScript Interceptors

A diferencia de los interceptores personalizados Java, que deben cargarse en la Plataforma a través de un archivo .jar, los interceptores personalizados JavaScript se configuran directamente en la pantalla del API Manager.

Creación de un interceptor personalizado JavaScript

Se crean nuevos interceptores en la página de menú Interceptors, a través del botón + en la esquina inferior derecha de la pantalla.

custom create

Para crear un interceptor JavaScript, hacer clic o colocar el cursor sobre el botón + y seleccionar la opción Create Custom JavaScript.

custom js create

Esto abrirá el editor (ver imagen a continuación) y usted será capaz de configurar su interceptor.

custom js editor

Configuración del interceptor

Inserte el nombre (Name) del interceptor. La casilla de verificación Abort request if fail se puede marcar para anular la llamada en caso de que se produzca un error.

El campo para editar código es donde el usuario debe insertar el script que se ejecutará con el interceptor. Puede leer más sobre scripts abajo.

Es posible seleccionar crear o utilizar etiquetas existentes para categorizar el interceptor (campo: Tags). Si no introduce ninguna etiqueta, el interceptor se asignará a Uncategorized.

El campo Visibility le permite elegir el nivel de visibilidad del interceptor. Puede leer acerca de las reglas de visibilidad aquí.

Los interceptores personalizados JavaScript se pueden agregar a los flujos de petición (request) o de respuesta (response). Es decir, se pueden usar para modificar llamadas antes de que una petición esté completa o después de que el servidor haya enviado la respuesta al gateway.

Lista de interceptores personalizados JavaScript

Los interceptores JavaScript existentes se muestran en tarjetas agrupadas por etiquetas; los que no estén asignados a una etiqueta aparecerán en la agrupación Uncategorized.

custom js list

Para saber a qué etiquetas se asigna un interceptor personalizado, haga clic en el icono icon tags y se mostrará una ventana que contiene las etiquetas.

custom tags

Edición del interceptor

Para editar un interceptor, haga clic en su icono en la lista de interceptores, lo que abrirá el editor (vea las imágenes a continuación).

custom js edit
custom js editor
Si edita un interceptor personalizado, debe quitar todas las instancias de este interceptor que se habían insertado en los flujos de APIs antes de las modificaciones. Esto se debe a que los cambios realizados en un interceptor no se reflejarán en las instancias del mismo interceptor en los flujos de APIs.

Eliminación de un interceptor

Para eliminar un interceptor personalizado, acceda al editor y haga clic en el botón Delete interceptor. Se mostrarán las APIs en las que se utiliza el interceptor y será posible confirmar la exclusión haciendo clic en el botón Delete.

custom js delete

Funcionamiento y ayuda con scripts

En este tipo de transformación, se registra un fragmento de código JavaScript en el API Manager y se envía al gateway.

El script insertado en el editor se compone de los códigos que se ejecutarán para manipular peticiones/respuestas. Cada script puede incluir una estructura de datos que representa la petición/respuesta actual y una serie de utilidades. Puede modificar las peticiones, la respuesta, o desencadenar otros procesos mediante los datos de la llamada actual.

Los scripts se interpretan utilizando el motor JavaScript dentro de la JVM (Rhino para Java 1.7 o Nashorn para Java 1.8). Tenga en cuenta, sin embargo, que puede haber pérdida de rendimiento si se ejecutan varios scripts complejos en cada llamada.

El objetivo de esta subsección es darle una idea sólida de cómo crear scripts para las acciones que necesita. Además de estas explicaciones y referencias más generales, puede encontrar una serie de ejemplos de script más específicos en esta página.

Referencia

Puede utilizar una serie de variables y utilidades implícitas en el código del interceptor JavaScript:

Variable Descripción

$call

Este objeto agrupa todos los datos relacionados con la llamada actual, incluida la petición, la respuesta y otros datos generados durante el procesamiento del API Gateway.

$request

Acceso directo a $call.request.

$response

Acceso directo a $call.response.

$base64

Utilidad para codificar y decodificar Base64.

$http

Utilidad para llamar a HTTP y otros servidores.

$jdom

Utilidad para formatar XML.

$json

Utilidad para formatar JSON.

$cookies

Utilidad para el análisis de cookies.

$console

Utilidad para usar con depuración personalizada.

$gzip

Utilidad para archivar (de)compresión.

$billing

Utilidad para manipular el servicio de facturación.

Javadoc

Puede acceder al Javadoc de los objetos $call, $request y $response aquí:

Y aquí está el Javadoc con las clases de utilidad:

Puntos de ejecución

Un interceptor personalizado JavaScript se puede ejecutar en los flujos de petición (request) o respuesta (response). Cuando se ejecuta en la petición, solo se deben cambiar los valores del objeto $request. Cuando se ejecuta en la respuesta, solo se deben cambiar los valores del objeto $response.

Depuración de código

Los interceptores de JavaScript tienen la posibilidad de ejecutar una depuración de código. Para utilizarla, inserte la siguiente línea de código y habilite la opción debug en el editor (consulte la imagen siguiente).

$console.debug("identifier", value);
custom js debug

Para ver los resultados de la depuración, acceda al Trace y abra los detalles de la llamada realizada. Las líneas que se ejecutaron se mostrarán en la pestaña Gateway Trace, como se muestra a continuación.

custom js debug trace

Haga clic en el icono de insecto para ver los detalles.

custom js debug details
Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]