Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
En este tema se describe el modelo de objetos de JavaScript de Apigee. Es importante que conozcas este modelo si tienes intención de usar la política de JavaScript para añadir JavaScript personalizado a un proxy de API.
Información sobre el modelo de objetos de JavaScript
El modelo de objetos de JavaScript define objetos con propiedades asociadas que están disponibles para el código JavaScript que se ejecuta en un flujo de proxy de Apigee. Usa la política de JavaScript para adjuntar este código personalizado a un flujo de proxy de API.
Los objetos definidos por este modelo tienen un ámbito dentro del flujo del proxy de API, lo que significa que determinados objetos y propiedades solo están disponibles en puntos específicos del flujo. Cuando se ejecuta tu código JavaScript, se crea un ámbito para la ejecución. En ese ámbito, se crean estas referencias de objetos:
- context: objeto que proporciona acceso al contexto del mensaje.
- Solicitud: abreviatura que permite acceder al objeto de solicitud.
- response: abreviatura que permite acceder al objeto de respuesta
- crypto: proporciona varias funciones hash.
- print: función para emitir resultados.
- properties: permite leer las propiedades de configuración de la política.
Objeto de contexto
El objeto context
tiene un ámbito global. Está disponible en cualquier parte del flujo del proxy de la API. Tiene cuatro objetos secundarios: proxyRequest
, proxyResponse
,
targetRequest
y targetResponse
. Estos objetos secundarios se limitan a la solicitud y la respuesta del entorno, ya sea la solicitud y la respuesta del proxy o la solicitud y la respuesta de destino. Por ejemplo, si la política de JavaScript se ejecuta en la parte del endpoint proxy del flujo, los objetos context.proxyRequest
y context.proxyResponse
están en el ámbito. Si el código JavaScript se ejecuta en un flujo de destino, los objetos context.targetRequest
y context.targetResponse
están en el ámbito.
El objeto context
también tiene propiedades y métodos, que se describen en detalle en este tema. Por ejemplo, el siguiente código JavaScript usa la propiedad context.flow
y llama a los métodos get/setVariable() en context
.
if (context.flow=="PROXY_REQ_FLOW") { var username = context.getVariable("request.formparam.user"); context.setVariable("USER.name", username); }
Estos métodos interactúan directamente con las variables de flujo.
El valor de la propiedad context.flow
es el ámbito del flujo actual. En el flujo de solicitudes de proxy, se asigna a la constante PROXY_REQ_FLOW
. Si en el flujo de respuesta de destino, se define como TARGET_RESP_FLOW
. Esta constante es útil para
ejecutar código específico de un ámbito. El getter te permite obtener variables de flujo y el setter te permite definir variables de flujo. Estas variables suelen estar disponibles en el flujo del proxy y otras políticas pueden usarlas.
Consulta más información y ejemplos en la referencia del objeto de contexto.
El objeto criptográfico
El objeto criptográfico añade compatibilidad criptográfica básica de alto rendimiento al modelo de objetos de JavaScript. Consulta la referencia del objeto criptográfico para obtener más detalles y ejemplos.
Objetos de solicitud y respuesta
Los objetos request
y response
son referencias abreviadas a la solicitud y la respuesta del entorno, ya sea la solicitud y la respuesta del proxy o la solicitud y la respuesta de destino. Los objetos a los que hacen referencia estas variables dependen del contexto en el que se ejecute la política de JavaScript. Si el código JavaScript se ejecuta en el flujo de un endpoint proxy, las variables de solicitud y respuesta hacen referencia a context.proxyRequest
y context.proxyResponse
. Si el código JavaScript se ejecuta en un flujo de destino, las variables
hacen referencia a context.targetRequest
y context.targetResponse
.
La función print()
El modelo de objetos de JavaScript incluye una función print() que puedes usar para mostrar información de depuración en la herramienta de depuración de Apigee. Consulta Depurar con instrucciones print() de JavaScript.
Objeto properties
Cuando se usa un elemento Properties
en la configuración de la política, el código JavaScript puede acceder a los valores de esas propiedades mediante la variable properties
.
Por ejemplo, si su configuración de JavaScript contiene lo siguiente:
<Javascript name='JS-1' > <Properties> <Property name="number">8675309</Property> <Property name="firstname">Jenny</Property> </Properties> <ResourceURL>jsc://my-code.js</ResourceURL> </Javascript>
Después, en my-code.js
, puedes hacer lo siguiente:
print(properties.firstname); // prints Jenny print(properties.number); // 8675309
De forma más práctica, la configuración puede permitir que el código se comporte de forma diferente cuando se ejecute en entornos distintos, en momentos diferentes o por cualquier otro motivo.
Por ejemplo, en el siguiente ejemplo se especifica el "nombre de la variable" y el estilo de salida en el que JavaScript debe emitir información:
<Javascript name='JS-2' > <Properties> <Property name="output">my_output_variable</Property> <Property name="prettyPrint">true</Property> </Properties> <ResourceURL>jsc://emit-results.js</ResourceURL> </Javascript>
emit-results.js
, el código podría hacer lo siguiente:
var result = { prop1: "something", prop2 : "something else" } ; if (properties.prettyPrint == "true") { context.setVariable(properties.output, JSON.stringify(result, null, 2)); } else { context.setVariable(properties.output, JSON.stringify(result)); }
Referencia del objeto criptográfico
El objeto crypto te permite realizar funciones básicas de cifrado criptográfico en JavaScript.
El objeto criptográfico tiene un ámbito global. Está disponible en cualquier parte del flujo del proxy de API. Crypto te permite trabajar con estos objetos hash:
- SHA-1
- SHA256
- SHA512
- MD5
Trabajar con objetos SHA-1
Puede crear objetos SHA-1, actualizarlos y convertirlos en valores hexadecimales y base64.
Crea un objeto SHA-1
var _sha1 = crypto.getSHA1();
Actualizar un objeto SHA-1
Sintaxis
_sha1.update(value);
Parámetros
- value: (cadena) cualquier valor de cadena.
Ejemplo
Actualiza un objeto SHA-1:
_sha1.update("salt_value"); _sha1.update("some text");
Devuelve el objeto SHA-1 como una cadena hexadecimal
var _hashed_token = _sha1.digest();
Devuelve el objeto SHA-1 como una cadena base64
var _hashed_token = _sha1.digest64();
Trabajar con objetos SHA-256
Puedes crear objetos SHA-256, actualizarlos y convertirlos en valores hexadecimales y base64.
Crea un objeto SHA-256.
var _sha256 = crypto.getSHA256();
Actualizar un objeto SHA-256
Sintaxis
_sha256.update(value);
Parámetros
- value: (cadena) cualquier valor de cadena.
Ejemplo
Actualiza un objeto SHA-256:
_sha256.update("salt_value"); _sha256.update("some text");
Devuelve el objeto SHA-256 como una cadena hexadecimal.
var _hashed_token = _sha256.digest();
Devuelve el objeto SHA-256 como una cadena base64
var _hashed_token = _sha256.digest64();
Trabajar con objetos SHA-512
Puede crear objetos SHA-512, actualizarlos y convertirlos en valores hexadecimales y base64.
Crea un objeto SHA-512
var _sha512 = crypto.getSHA512();
Actualizar un objeto SHA-512
Sintaxis
_sha512.update(value);
Parámetros
- value: (cadena) cualquier valor de cadena.
Ejemplo
Actualiza un objeto SHA-512:
_sha512.update("salt_value"); _sha512.update("some text");
Devuelve el objeto SHA-512 como una cadena hexadecimal
var _hashed_token = _sha512.digest();
Devuelve el objeto SHA-512 como una cadena base64
var _hashed_token = _sha512.digest64();
Trabajar con objetos MD5
Puedes crear objetos MD5, actualizarlos y convertirlos en valores hexadecimales y base64.
Crea un objeto MD5.
var _md5 = crypto.getMD5();
Actualizar un objeto MD5
Sintaxis
_md5.update(value);
Parámetros
- value: (cadena) cualquier valor de cadena.
Ejemplo
Actualiza un objeto MD5:
_md5.update("salt_value"); _md5.update("some text");
Devuelve el objeto MD5 como una cadena hexadecimal
var _hashed_token = _md5.digest();
Devuelve el objeto MD5 como una cadena base64
var _hashed_token = _md5.digest64();
Compatibilidad con fechas y horas criptográficas
El objeto crypto admite patrones de formato de fecha y hora.
crypto.dateFormat()
Devuelve una fecha en formato de cadena.
Sintaxis
crypto.dateFormat(format, [timezone], [time])
Parámetros
- format: (cadena) la implementación subyacente de este parámetro es java.text.SimpleDateFormat. Por ejemplo: "AAAA-MM-DD HH:mm:ss.SSS"
- timezone: (cadena, opcional) La implementación subyacente de este parámetro es java.util.TimeZone. Este parámetro es el mismo. Valor predeterminado: UTC
- time: (número, opcional) valor de marca de tiempo de Unix que se va a formatear. Valor predeterminado: hora actual
Ejemplos
Obtener la hora actual, hasta los milisegundos:
var _now = crypto.dateFormat('YYYY-MM-DD HH:mm:ss.SSS');
Obtener la hora actual de la zona horaria del Pacífico:
var _pst = crypto.dateFormat('YYYY-MM-DD HH:mm:ss.SSS','PST');
Obtener el valor de diez segundos a partir de ahora:
var _timeNow = Number(context.getVariable('system.timestamp')); var tenSeconds = crypto.dateFormat('YYYY-MM-DD HH:mm:ss.SSS','PST', _timeNow + 10 * 1000);
Ejemplos adicionales. Consulta también la documentación de java.text.SimpleDateFormat.
var _pst = crypto.dateFormat('M');
var _pst = crypto.dateFormat('EEE, d MMM yyyy HH:mm:ss Z');
var _pst = crypto.dateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Usa getHash() para obtener cualquiera de los objetos de hash admitidos.
Ejemplos
var _hash1 = crypto.getHash('MD5'); var _hash2 = crypto.getHash('SHA-1'); var _hash3 = crypto.getHash('SHA-256'); var _hash4 = crypto.getHash('SHA-512');
Ejemplo con cifrado
try { // get values to use with hash functions var salt = context.getVariable("salt") || 'SomeHardCodedSalt'; var host = context.getVariable("request.header.Host"); var unhashedToken = ""; var _timeNow = Number(context.getVariable('system.timestamp')); var now = crypto.dateFormat('YYYY-MM-DD HH:mm:ss.SSS','PST', _timeNow); unhashed_token = "|" + now + "|" + host // generate a hash with the unhashedToken: var sha512 = crypto.getSHA512(); sha512.update(salt); sha512.update(unhashedToken); // convert to base64 var base64Token = sha512.digest64(); // set headers context.setVariable("request.header.now", now); context.setVariable("request.header.token", base64Token); } catch(e) { throw 'Error in Javascript'; }
Referencia del objeto de contexto
- Resumen del objeto de contexto
- métodos del objeto de contexto
- Propiedades del objeto de contexto
- Hijos del objeto de contexto
Se crea un objeto context
para cada transacción de solicitud o respuesta que ejecuta un proxy de API. El objeto context
expone métodos para obtener, definir y quitar variables
relacionadas con cada transacción.
Las variables definen propiedades específicas de una transacción. La hora del día, la configuración regional del cliente que envía la solicitud, el user-agent del cliente que envía la solicitud y la URL del servicio de destino son ejemplos de variables disponibles en context
. Por lo tanto, context
es útil para crear una lógica que se base en estas propiedades para ejecutar un comportamiento personalizado.
Consulta la referencia de variables de flujo y la política ExtractVariables.
context object summary
En esta tabla se describe brevemente el objeto de contexto y sus elementos secundarios, y se enumeran las propiedades que están vinculadas a cada uno de ellos.
Nombre | Descripción | Propiedades |
---|---|---|
context |
Contenedor del contexto de la canalización de procesamiento de mensajes y de los flujos de solicitud y respuesta que ejecutan ProxyEndpoint y TargetEndpoint. | flow, session |
context. proxyRequest |
Objeto que representa el mensaje de solicitud entrante a ProxyEndpoint (desde la aplicación que realiza la solicitud al proxy de API). | Encabezados, parámetros de consulta, método, cuerpo y URL |
context. targetRequest |
Objeto que representa el mensaje de solicitud saliente de TargetEndpoint (del proxy de API al servicio de backend). | Encabezados, parámetros de consulta, método, cuerpo y URL |
context. targetResponse |
Objeto que representa el mensaje de respuesta de destino entrante (del servicio de backend al proxy de API) | encabezados, contenido y estado |
context. proxyResponse |
Objeto que representa el mensaje de respuesta del proxy saliente (del proxy de API a la aplicación que realiza la solicitud). | encabezados, contenido y estado |
context.flow |
El nombre del flujo actual. | Consulta context.flow. |
context.session |
Un mapa de pares nombre/valor que puedes usar para transferir objetos entre dos pasos diferentes
que se ejecutan en el mismo contexto. Por ejemplo: context.session['key'] = 123 . |
Para obtener más información sobre cuándo usar este objeto y cuándo no, consulta ¿Cuál es la diferencia entre context.session['hello'] = {} y context.setVariable("hello", {})? |
Métodos del objeto context
context.getVariable()
Obtiene el valor de una variable predefinida o personalizada.
Sintaxis
context.getVariable("variable-name");
Ejemplo
Para obtener el valor del año actual, sigue estos pasos:
var year = context.getVariable('system.time.year');
context.setVariable()
Define el valor de una variable personalizada o de cualquier variable predefinida que se pueda escribir.
Sintaxis
context.setVariable("variable-name", value);
Ejemplo
Un caso habitual para definir una variable es cuando un proxy de API debe escribir dinámicamente la URL de destino. El siguiente código JavaScript obtiene el valor de una variable llamada USER.name, añade ese valor como parámetro de consulta a la URL http://mocktarget.apigee.net?user=
y, a continuación, asigna ese valor a la variable predefinida target.url
.
context.setVariable("target.url", "http://mocktarget.apigee.net/user?user="+context.getVariable("USER.name"));
context.removeVariable()
Elimina una variable del contexto.
Sintaxis
context.removeVariable('variable-name');
Propiedades del objeto context
La propiedad flow
es una cadena que identifica el flujo del proxy de API actual. Esta propiedad se usa para indicar el flujo al que está adjunto el JavaScript. Los valores admitidos son:
PROXY_REQ_FLOW
PROXY_RESP_FLOW
TARGET_REQ_FLOW
TARGET_RESP_FLOW
Cada nombre de flujo abarca PreFlow, PostFlow y cualquier flujo condicional definido en los ProxyEndpoints o TargetEndpoints.
Esta propiedad opcional es útil cuando se ejecuta JavaScript común en más de un flujo, pero puede variar su comportamiento en función del flujo en el que se ejecute. Usa la propiedad Flow para los módulos de JavaScript que se vayan a reutilizar en varios proxies de API, en los que el código debe comprobar el flujo actual antes de ejecutar la lógica.
Ejemplo
Definir un encabezado HTTP solo en el flujo targetRequest:
if (context.flow=="TARGET_REQ_FLOW") { context.targetRequest.headers['TARGET-HEADER-X']='foo'; }
Define el contenido solo en el flujo proxyResponse:
if (context.flow=="PROXY_RESP_FLOW") { context.proxyResponse.content='bar'; }
Un mapa de pares nombre/valor que se puede usar para transferir objetos entre dos políticas que se ejecutan en el mismo contexto de mensaje.
Ejemplo
Definir un valor en la sesión:
context.session['key'] = 123;
Obtener el valor de la sesión:
var value = context.session['key']; // 123
Hijos del objeto de contexto
Como se muestra a continuación, un flujo de proxy de API completo abarca cuatro fases distintas, cada una de las cuales tiene un objeto de mensaje asociado que es un elemento secundario del objeto de contexto:
context.proxyRequest
: mensaje de solicitud entrante recibido del cliente que realiza la solicitud.context.targetRequest
: mensaje de solicitud saliente enviado al servicio backend.context.proxyResponse
: mensaje de respuesta saliente devuelto al cliente que ha enviado la solicitud.context.targetResponse
: mensaje de solicitud entrante recibido del servicio backend.
En las siguientes secciones se describen los métodos y las propiedades de estos objetos:
context.*Solicitar objetos secundarios
Por cada transacción HTTP que se ejecuta en un proxy de API, se crean dos objetos de mensaje de solicitud: uno de entrada (la solicitud del cliente) y otro de salida (la solicitud generada por el proxy de API y enviada al backend de destino).
El objeto context
tiene objetos secundarios que representan estos mensajes de solicitud: context.proxyRequest
y context.targetRequest
. Estos objetos le permiten acceder a las propiedades del flujo de solicitudes que están en el ámbito cuando se ejecuta su código JavaScript.
Propiedades del objeto secundario context.*Request
Nombre de la propiedad | Descripción |
---|---|
url |
La propiedad La URL completa de la solicitud se compone de las siguientes propiedades:
Al obtener
|
Ejemplos: context.targetRequest.url = 'http://www.example.com/path?q1=1' context.targetRequest.protocol ='https'; |
|
headers |
Encabezados de solicitud HTTP como una asignación de |
Ejemplos: Para esta solicitud HTTP: POST /v1/blogs HTTP/1.1 Host: api.example.com Content-Type: application/json Authorization: Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5Z context.proxyRequest.headers['Content-Type']; context.proxyRequest.headers['Authorization']; devolverá los siguientes valores application/json Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5Z |
|
queryParams |
Los parámetros de consulta del mensaje de solicitud como una asignación de |
Ejemplos: "?city=PaloAlto&city=NewYork" se puede acceder de la siguiente manera: context.proxyRequest.queryParams['city']; // == 'PaloAlto' context.proxyRequest.queryParams['city'][0] // == 'PaloAlto' context.proxyRequest.queryParams['city'][1]; // == 'NewYork' context.proxyRequest.queryParams['city'].length(); // == 2 |
|
method |
El verbo HTTP (GET, POST, PUT o DELETE). PATCH, etc.) asociada a la solicitud. |
Ejemplos: Para esta solicitud: POST /v1/blogs HTTP/1.1 Host: api.example.com Content-Type: application/json Authorization: Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5Z El siguiente código JavaScript: context.proxyRequest.method; devolverá el siguiente valor: POST |
|
body |
El cuerpo del mensaje (carga útil) de la solicitud HTTP. El cuerpo de la solicitud tiene los siguientes miembros:
|
Ejemplos: En el caso de un cuerpo XML: <customer number='1'> <name>Fred<name/> <customer/> Para acceder a los elementos del objeto XML, sigue estos pasos: var name = context.targetRequest.body.asXML.name; Para acceder a los atributos XML, usa la notación var number = context.targetRequest.body.asXML.@number; En el caso de un cuerpo de solicitud JSON: { "a": 1 , "b" : "2" } var a = context.proxyRequest.body.asJSON.a; // == 1 var b = context.proxyRequest.body.asJSON.b; // == 2 Para leer los parámetros de formulario, siga estos pasos: "vehicle=Car&vehicle=Truck" v0 = context.proxyRequest.body.asForm['vehicle'][0]; v1 = context.proxyRequest.body.asForm['vehicle'][1]; |
Objetos secundarios de context.*Response
Por cada transacción HTTP que se ejecuta en un proxy de API, se crean dos objetos de mensaje de respuesta: uno de entrada (la respuesta del servicio backend) y otro de salida (la respuesta que se envía al cliente).
El objeto de contexto tiene objetos secundarios que representan estos mensajes de respuesta: context.proxyResponse
y context.targetResponse
. Estos objetos le permiten acceder a las propiedades del flujo de respuesta que están en el ámbito cuando se ejecuta su código JavaScript.
Propiedades del objeto context.*Response
Nombre de la propiedad | Descripción |
---|---|
headers |
Los encabezados HTTP del mensaje de respuesta como una asignación de |
Ejemplo: var cookie = context.targetResponse.headers['Set-Cookie']; |
|
status |
El código de estado con el mensaje de estado como propiedad. Tanto el código de estado como el mensaje de estado están disponibles como propiedades. |
Ejemplo: var status = context.targetResponse.status.code; // 200 var msg = context.targetResponse.status.message; // "OK" |
|
content |
Cuerpo HTTP (contenido de la carga útil) del mensaje de respuesta. El contenido de la respuesta tiene los siguientes miembros: context.targetResponse.content.asXML; context.targetResponse.content.asJSON; |
Usar la notación .asXML
Hay una forma práctica de consultar un documento XML mediante la notación .asXML
.
En esta sección se describe cómo usar esta notación y en qué se diferencia de request.content
y context.proxyRequest.content
.
Por ejemplo:
request.content.asXML
o
context.proxyRequest.content.asXML
Ambos formularios, *.content
y *.content.asXML
, se pueden usar en un contexto de cadena y JavaScript los convertirá en cadenas. En el primer caso (*.content
), la cadena incluye todas las declaraciones, así como los comentarios XML. En el segundo caso (*.content.asXML
), el valor de cadena del resultado se limpia de declaraciones y comentarios.
Ejemplo
msg.content:
<?xml version="1.0" encoding="UTF-8"?> <yahoo:error xmlns:yahoo="http://yahooapis.com/v1/base.rng" xml:lang="en-US"> <yahoo:description>Please provide valid credentials. OAuth oauth_problem="unable_to_determine_oauth_type", realm="yahooapis.com" </yahoo:description> </yahoo:error> <!-- mg023.mail.gq1.yahoo.com uncompressed/chunked Sat Dec 14 01:23:35 UTC 2013 -->
msg.content.asXML:
<?xml version="1.0" encoding="UTF-8"?> <yahoo:error xmlns:yahoo="http://yahooapis.com/v1/base.rng" xml:lang="en-US"> <yahoo:description>Please provide valid credentials. OAuth oauth_problem="unable_to_determine_oauth_type", realm="yahooapis.com" </yahoo:description> </yahoo:error>
Además, puede usar el formulario .asXML
para recorrer la jerarquía XML especificando los nombres de los elementos y los atributos. No es posible recorrer la jerarquía
con la otra sintaxis.
Depurar con instrucciones print() de JavaScript
Si usa la política de JavaScript para ejecutar código de JavaScript personalizado, tenga en cuenta que puede usar la función print() para mostrar información de depuración en la herramienta de depuración. Esta función está disponible directamente a través del modelo de objetos de JavaScript. Por ejemplo:
if (context.flow=="PROXY_REQ_FLOW") { print("In proxy request flow"); var username = context.getVariable("request.queryparam.user"); print("Got query param: " + username); context.setVariable("USER.name", username); print("Set query param: " + context.getVariable("USER.name")); } if (context.flow=="TARGET_REQ_FLOW") { print("In target request flow"); var username = context.getVariable("USER.name"); var url = "http://mocktarget.apigee.net/user?" context.setVariable("target.url", url + "user=" + username); print("Callout to URL: ", context.getVariable("target.url")); }
Para ver el resultado, selecciona Output from all transactions (Salida de todas las transacciones) en la parte inferior de la ventana Debug (Depuración). También puede encontrar el resultado en la propiedad de depuración llamada stepExecution-stdout
.
Hacer llamadas de JavaScript con httpClient
Usa httpClient
para hacer varias solicitudes HTTP asíncronas y paralelas a cualquier URL
desde código JavaScript personalizado que se ejecute en un flujo de proxy de API.
El objeto httpClient
se expone mediante el modelo de objeto JavaScript de Apigee.
Acerca de httpClient
El objeto httpClient
se expone al código JavaScript personalizado que se ejecuta en Apigee
a través del modelo de objetos de JavaScript. Para adjuntar JavaScript personalizado a un proxy de API, usa la política de JavaScript. Cuando se ejecuta la política, se ejecuta el código JavaScript personalizado.
El objeto httpClient
es útil para desarrollar servicios compuestos o mashups. Por ejemplo, puedes consolidar varias llamadas de backend en un solo método de API.
A continuación, se muestra un patrón de uso básico. Crea una instancia de un objeto Request, asígnale una URL (por ejemplo, a un servicio backend al que quieras llamar) y llama a httpClient.send
con ese objeto Request.
var myRequest = new Request(); myRequest.url = "http://www.example.com"; var exchangeObj = httpClient.send(myRequest);
Referencia de httpClient
El cliente HTTP expone dos métodos: get()
y send()
.
httpClient.get()
Método de conveniencia para solicitudes HTTP GET
sencillas, sin compatibilidad con encabezados HTTP.
Uso
var exchangeObj = httpClient.get(url);
Devoluciones
El método devuelve un objeto exchange
. Este objeto no tiene propiedades y expone los siguientes métodos:
isError()
: (booleano) devuelvetrue
si httpClient no ha podido conectarse al servidor. Los códigos de estado HTTP4xx
y5xx
dan como resultadoisError()
false
, ya que la conexión se ha completado y se ha devuelto un código de respuesta válido. SiisError()
devuelvetrue
, una llamada agetResponse()
devuelve elundefined
de JavaScript.isSuccess()
: (booleano) devuelvetrue
si el envío se ha completado correctamente.isComplete()
: (booleano) devuelvetrue
si la solicitud se ha completado.waitForComplete()
: pausa el hilo hasta que se complete la solicitud (correctamente o con un error).getResponse()
: (objeto) devuelve el objeto de respuesta sihttpClient.send()
se ha completado correctamente. El objeto devuelto tiene los mismos métodos y propiedades que el objeto context.proxyResponse. Consulta el resumen del objeto de contexto.getError()
: (cadena) si la llamada ahttpClient.send()
ha provocado un error, devuelve el mensaje de error como una cadena.
Ejemplo
Envía un objeto Request totalmente configurado que contenga las propiedades de la solicitud HTTP. Usa una retrollamada no bloqueadora para procesar la respuesta.
// Add the required the headers for making a specific API request var headers = {'X-SOME-HEADER' : 'some value' }; // Make a GET API request along with headers var myRequest = new Request("http://www.example.com","GET",headers); // Define the callback function and process the response from the GET API request function onComplete(response,error) { // Check if the HTTP request was successful if (response) { context.setVariable('example.status', response.status); } else { context.setVariable('example.error', 'Woops: ' + error); } } // Specify the callback Function as an argument httpClient.get(myRequest, onComplete);
Usar la política de JavaScript
Usa la política de JavaScript para adjuntar código de JavaScript personalizado a un flujo de proxy. Consulta la política de JavaScript.