Esta página aplica-se ao Apigee e ao Apigee Hybrid.
Veja a documentação do
Apigee Edge.
Este tópico aborda o modelo de objetos JavaScript do Apigee. É importante compreender este modelo se pretender usar a política de JavaScript para adicionar JavaScript personalizado a um proxy de API.
Acerca do modelo de objeto JavaScript
O modelo de objeto JavaScript define objetos com propriedades associadas que estão disponíveis para o código JavaScript em execução num fluxo de proxy do Apigee. Use a política de JavaScript para anexar este código personalizado a um fluxo de proxy de API.
Os objetos definidos por este modelo têm âmbito no fluxo do proxy da API, o que significa que determinados objetos e propriedades só estão disponíveis em pontos específicos do fluxo. Quando o seu JavaScript é executado, é criado um âmbito para a execução. Nesse âmbito, são criadas estas referências de objetos:
- context: um objeto que fornece acesso ao contexto da mensagem
- request: uma abreviatura que permite o acesso ao objeto de pedido
- response: uma abreviatura que permite o acesso ao objeto de resposta
- crypto: fornece várias funções hash
- print: uma função para emitir resultados
- properties: permite o acesso de leitura às propriedades de configuração na política
O objeto de contexto
O objeto context
tem âmbito global. Está disponível em qualquer lugar no fluxo do proxy da API. Tem quatro objetos subordinados: proxyRequest
, proxyResponse
,
targetRequest
e targetResponse
. Estes objetos secundários estão no âmbito do pedido e da resposta ambientais, quer seja o pedido e a resposta do proxy ou o pedido e a resposta de destino. Por exemplo, se a política de JavaScript for executada na parte do ponto final do proxy do fluxo,
os objetos context.proxyRequest
e context.proxyResponse
estão no
âmbito. Se o JavaScript for executado num fluxo de destino, os objetos context.targetRequest
e context.targetResponse
estão no âmbito.
O objeto context
também tem propriedades e métodos, que são descritos detalhadamente
neste tópico. Por exemplo, o seguinte exemplo de código JavaScript usa a propriedade
context.flow
e chama os métodos get/setVariable() em
context
.
if (context.flow=="PROXY_REQ_FLOW") { var username = context.getVariable("request.formparam.user"); context.setVariable("USER.name", username); }
Estes métodos interagem diretamente com as variáveis de fluxo.
O valor da propriedade context.flow
é o âmbito do fluxo atual. No fluxo de pedidos
de proxy, está definido como a constante PROXY_REQ_FLOW
. Se, no fluxo de resposta de destino, estiver definido como TARGET_RESP_FLOW
. Esta constante é útil para executar código específico do âmbito. O getter permite-lhe obter variáveis de fluxo e o setter permite-lhe definir variáveis de fluxo. Geralmente, estas variáveis estão disponíveis no fluxo de proxy e podem ser consumidas por outras políticas.
Consulte a referência do objeto de contexto para ver mais detalhes e exemplos.
O objeto crypto
O objeto crypto adiciona suporte criptográfico básico de alto desempenho ao modelo de objeto JavaScript. Consulte a referência de objetos criptográficos para ver mais detalhes e exemplos.
Os objetos de pedido e resposta
Os objetos request
e response
são referências abreviadas ao pedido e à resposta do ambiente, quer seja o pedido e a resposta do proxy ou o pedido e a resposta de destino. Os objetos a que estas variáveis se referem dependem do contexto em que a política de JavaScript é executada. Se o JavaScript for executado no fluxo de um ponto final de proxy, as variáveis de pedido e resposta referem-se a context.proxyRequest
e context.proxyResponse
. Se o JavaScript for executado num fluxo de destino, as variáveis
referem-se a context.targetRequest
e context.targetResponse
.
A função print()
O modelo de objeto JavaScript inclui uma função print() que pode usar para gerar informações de depuração na ferramenta de depuração do Apigee. Consulte o artigo Depurar com declarações print() de JavaScript.
O objeto properties
Quando usar um elemento Properties
na configuração da política, o código JavaScript pode aceder aos valores dessas propriedades através da variável properties
.
Por exemplo, se a sua configuração JavaScript contiver:
<Javascript name='JS-1' > <Properties> <Property name="number">8675309</Property> <Property name="firstname">Jenny</Property> </Properties> <ResourceURL>jsc://my-code.js</ResourceURL> </Javascript>
Em seguida, em my-code.js
, pode:
print(properties.firstname); // prints Jenny print(properties.number); // 8675309
De forma mais prática, a configuração pode permitir que o código se comporte de forma diferente quando executado em ambientes diferentes, em momentos diferentes ou por qualquer motivo.
Por exemplo, o seguinte especifica o "nome da variável" e o estilo de saída para o qual o JavaScript deve emitir informações:
<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
, o código pode fazer o seguinte:
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)); }
Referência do objeto cripto
O objeto crypto permite-lhe executar funções de hash criptográficas básicas em JavaScript.
O objeto cripto tem âmbito global. Está disponível em qualquer lugar no fluxo do proxy de API. A API Crypto permite-lhe trabalhar com os seguintes objetos hash:
- SHA-1
- SHA256
- SHA512
- MD5
Trabalhar com objetos SHA-1
Pode criar objetos SHA-1, atualizá-los e convertê-los em valores hexadecimais e base64.
Crie um novo objeto SHA-1
var _sha1 = crypto.getSHA1();
Atualize um objeto SHA-1
Sintaxe
_sha1.update(value);
Parâmetros
- valor: (string) qualquer valor de string.
Exemplo
Atualize um objeto SHA-1:
_sha1.update("salt_value"); _sha1.update("some text");
Devolve o objeto SHA-1 como uma string hexadecimal
var _hashed_token = _sha1.digest();
Devolve o objeto SHA-1 como uma string base64
var _hashed_token = _sha1.digest64();
Trabalhar com objetos SHA-256
Pode criar objetos SHA-256, atualizá-los e convertê-los em valores hexadecimais e base64.
Crie um novo objeto SHA-256
var _sha256 = crypto.getSHA256();
Atualize um objeto SHA-256
Sintaxe
_sha256.update(value);
Parâmetros
- valor: (string) qualquer valor de string.
Exemplo
Atualize um objeto SHA-256:
_sha256.update("salt_value"); _sha256.update("some text");
Devolva o objeto SHA-256 como uma string hexadecimal
var _hashed_token = _sha256.digest();
Devolva o objeto SHA-256 como uma string base64
var _hashed_token = _sha256.digest64();
Trabalhar com objetos SHA-512
Pode criar objetos SHA-512, atualizá-los e convertê-los em valores hexadecimais e base64.
Crie um novo objeto SHA-512
var _sha512 = crypto.getSHA512();
Atualize um objeto SHA-512
Sintaxe
_sha512.update(value);
Parâmetros
- valor: (string) qualquer valor de string.
Exemplo
Para atualizar um objeto SHA-512:
_sha512.update("salt_value"); _sha512.update("some text");
Devolve o objeto SHA-512 como uma string hexadecimal
var _hashed_token = _sha512.digest();
Devolva o objeto SHA-512 como uma string base64
var _hashed_token = _sha512.digest64();
Trabalhar com objetos MD5
Pode criar objetos MD5, atualizá-los e convertê-los em valores hexadecimais e base64.
Crie um novo objeto MD5
var _md5 = crypto.getMD5();
Atualize um objeto MD5
Sintaxe
_md5.update(value);
Parâmetros
- valor: (string) qualquer valor de string.
Exemplo
Atualize um objeto MD5:
_md5.update("salt_value"); _md5.update("some text");
Devolve o objeto MD5 como uma string hexadecimal
var _hashed_token = _md5.digest();
Devolva o objeto MD5 como uma string base64
var _hashed_token = _md5.digest64();
Suporte de data/hora de criptomoedas
O objeto crypto suporta padrões de formatação de data/hora.
crypto.dateFormat()
Devolve uma data no formato de string.
Sintaxe
crypto.dateFormat(format, [timezone], [time])
Parâmetros
- format: (string) a implementação subjacente para este parâmetro é java.text.SimpleDateFormat. Por exemplo: "AAAA-MM-DD HH:mm:ss.SSS"
- timezone: (string, opcional) A implementação subjacente deste parâmetro é java.util.TimeZone. Este parâmetro é o mesmo que o valor predefinido: UTC
- tempo: (número, opcional) um valor de data/hora Unix a formatar. Predefinição: hora atual
Exemplos
Obter a hora atual, até aos milissegundos:
var _now = crypto.dateFormat('YYYY-MM-DD HH:mm:ss.SSS');
Saber a hora atual do fuso horário do Pacífico:
var _pst = crypto.dateFormat('YYYY-MM-DD HH:mm:ss.SSS','PST');
Obter o valor de dez segundos a partir de agora:
var _timeNow = Number(context.getVariable('system.timestamp')); var tenSeconds = crypto.dateFormat('YYYY-MM-DD HH:mm:ss.SSS','PST', _timeNow + 10 * 1000);
Exemplos adicionais. Consulte também a documentação 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");
Use getHash() para obter qualquer um dos objetos hash suportados
Exemplos
var _hash1 = crypto.getHash('MD5'); var _hash2 = crypto.getHash('SHA-1'); var _hash3 = crypto.getHash('SHA-256'); var _hash4 = crypto.getHash('SHA-512');
Exemplo com criptomoedas
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'; }
Referência do objeto de contexto
- context object summary
- métodos de objetos de contexto
- propriedades do objeto de contexto
- context object children
É criado um objeto context
para cada transação de pedido/resposta executada por um proxy de API. O objeto context
expõe métodos para obter, definir e remover variáveis
relacionadas com cada transação.
As variáveis definem propriedades específicas de uma transação. A hora do dia, a localização do cliente que faz o pedido, o agente do utilizador do cliente que faz o pedido e o URL do serviço de destino são todos exemplos de variáveis disponíveis no context
. Por conseguinte,
context
é útil para criar lógica que dependa destas propriedades para executar
um comportamento personalizado.
Consulte a referência de variáveis de fluxo e a política ExtractVariables.
context object summary
Esta tabela descreve brevemente o objeto de contexto e os respetivos elementos subordinados, e apresenta as propriedades associadas a cada um.
Nome | Descrição | Propriedades |
---|---|---|
context |
Um contentor para o contexto do pipeline de processamento de mensagens e os fluxos de pedidos e respostas que são executados pelo ProxyEndpoint e TargetEndpoint. | flow, sessão |
context. proxyRequest |
Um objeto que representa a mensagem de pedido de entrada para o ProxyEndpoint (da app que faz o pedido para o proxy de API) | cabeçalhos, parâmetros de consulta, método, corpo, URL |
context. targetRequest |
Um objeto que representa a mensagem de pedido de saída do TargetEndpoint (do proxy de API para o serviço de back-end). | cabeçalhos, parâmetros de consulta, método, corpo, URL |
context. targetResponse |
Um objeto que representa a mensagem de resposta do destino de entrada (do serviço de back-end para o proxy de API) | cabeçalhos, conteúdo, estado |
context. proxyResponse |
Um objeto que representa a mensagem de resposta do proxy de saída (do proxy da API para a app que está a fazer o pedido) | cabeçalhos, conteúdo, estado |
context.flow |
O nome do fluxo atual. | Consulte context.flow. |
context.session |
Um mapa de pares nome/valor que pode usar para transmitir objetos entre dois passos diferentes
executados no mesmo contexto. Por exemplo: context.session['key'] = 123 . |
Para mais informações sobre quando e quando não usar este objeto, consulte Qual é a diferença entre context.session['hello'] = {} e context.setVariable("hello", {}). |
Métodos de objetos context
context.getVariable()
Recupera o valor de uma variável predefinida ou personalizada.
Sintaxe
context.getVariable("variable-name");
Exemplo
Para obter o valor do ano atual:
var year = context.getVariable('system.time.year');
context.setVariable()
Define o valor de uma variável personalizada ou de quaisquer variáveis predefinidas graváveis.
Sintaxe
context.setVariable("variable-name", value);
Exemplo
Um cenário comum para definir uma variável é quando um proxy de API tem de escrever dinamicamente o URL de destino. O JavaScript seguinte obtém o valor de uma variável denominada USER.name, anexa esse valor como um parâmetro de consulta ao URL
http://mocktarget.apigee.net?user=
e, em seguida, define o valor
target.url
predefinido para esse valor.
context.setVariable("target.url", "http://mocktarget.apigee.net/user?user="+context.getVariable("USER.name"));
context.removeVariable()
Remove uma variável do contexto.
Sintaxe
context.removeVariable('variable-name');
propriedades do objeto de contexto
A propriedade flow
é uma string que identifica o fluxo de proxy da API atual. Esta propriedade é usada para indicar o fluxo ao qual o JavaScript está anexado. Os valores suportados
são:
PROXY_REQ_FLOW
PROXY_RESP_FLOW
TARGET_REQ_FLOW
TARGET_RESP_FLOW
Cada nome de fluxo abrange o PreFlow, o PostFlow e quaisquer fluxos condicionais definidos nos ProxyEndpoints ou TargetEndpoints.
Esta propriedade opcional é útil quando o JavaScript comum é executado em mais do que um fluxo, mas pode variar o respetivo comportamento consoante o fluxo no qual é executado. Use a propriedade Flow para módulos JavaScript destinados a serem reutilizados em vários proxies de API, nos quais o código é necessário para verificar o Flow atual antes de executar a lógica.
Exemplo
Defina um cabeçalho HTTP apenas no fluxo targetRequest:
if (context.flow=="TARGET_REQ_FLOW") { context.targetRequest.headers['TARGET-HEADER-X']='foo'; }
Defina o conteúdo apenas no fluxo proxyResponse:
if (context.flow=="PROXY_RESP_FLOW") { context.proxyResponse.content='bar'; }
Um mapa de pares nome/valor que pode ser usado para transmitir objetos entre duas políticas em execução no mesmo contexto de mensagem.
Exemplo
Defina um valor na sessão:
context.session['key'] = 123;
Obtenha o valor da sessão:
var value = context.session['key']; // 123
context object children
Conforme mostrado abaixo, um fluxo de proxy de API completo abrange quatro fases distintas, cada uma das quais tem um objeto de mensagem associado que é um elemento secundário do objeto de contexto:
context.proxyRequest
: a mensagem de pedido recebida do cliente que está a fazer o pedido.context.targetRequest
: a mensagem de pedido de saída enviada para o serviço de back-end.context.proxyResponse
: A mensagem de resposta de saída devolvida ao cliente que fez o pedido.context.targetResponse
: a mensagem de pedido recebida do serviço de back-end.
As secções seguintes descrevem os métodos e as propriedades destes objetos:
context.*Request child objects
Para cada transação HTTP executada num proxy de API, são criados dois objetos de mensagens de pedido: um de entrada (o pedido do cliente) e um de saída (o pedido gerado pelo proxy de API e enviado para o destino de back-end).
O objeto context
tem objetos secundários que representam estas mensagens de pedido:
context.proxyRequest
e context.targetRequest
. Estes objetos permitem-lhe aceder a propriedades no fluxo de pedidos que estão no âmbito quando o seu código JavaScript é executado.
context.*Request child object properties
Nome de propriedade | Descrição |
---|---|
url |
A propriedade O URL completo do pedido é composto pelas seguintes propriedades:
Quando recebe
|
Exemplos: context.targetRequest.url = 'http://www.example.com/path?q1=1' context.targetRequest.protocol ='https'; |
|
headers |
Cabeçalhos do pedido HTTP como um mapeamento de |
Exemplos: Para este pedido 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']; devolve os seguintes valores application/json Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5Z |
|
queryParams |
Os parâmetros de consulta da mensagem de pedido como um mapeamento de |
Exemplos: "?city=PaloAlto&city=NewYork" pode ser acedido como: context.proxyRequest.queryParams['city']; // == 'PaloAlto' context.proxyRequest.queryParams['city'][0] // == 'PaloAlto' context.proxyRequest.queryParams['city'][1]; // == 'NewYork' context.proxyRequest.queryParams['city'].length(); // == 2 |
|
method |
O verbo HTTP (GET, POST, PUT, DELETE). PATCH, etc.) associado ao pedido |
Exemplos: Para esta solicitação: POST /v1/blogs HTTP/1.1 Host: api.example.com Content-Type: application/json Authorization: Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5Z O seguinte JavaScript: context.proxyRequest.method; devolve o seguinte valor POST |
|
body |
O corpo da mensagem (carga útil) do pedido HTTP. O corpo do pedido tem os seguintes membros:
|
Exemplos: Para um corpo XML: <customer number='1'> <name>Fred<name/> <customer/> Para aceder aos elementos do objeto XML da seguinte forma: var name = context.targetRequest.body.asXML.name; Para aceder aos atributos XML, use a notação var number = context.targetRequest.body.asXML.@number; Para um corpo do pedido JSON: { "a": 1 , "b" : "2" } var a = context.proxyRequest.body.asJSON.a; // == 1 var b = context.proxyRequest.body.asJSON.b; // == 2 Para ler parâmetros de formulário: "vehicle=Car&vehicle=Truck" v0 = context.proxyRequest.body.asForm['vehicle'][0]; v1 = context.proxyRequest.body.asForm['vehicle'][1]; |
context.*Response child objects
Para cada transação HTTP executada num proxy de API, são criados dois objetos de mensagens de resposta: um inbound (a resposta do serviço de back-end) e um outbound (a resposta enviada de volta ao cliente).
O objeto de contexto tem objetos secundários que representam estas mensagens de resposta:
context.proxyResponse
e context.targetResponse
. Estes objetos permitem-lhe
aceder a propriedades no fluxo de resposta que estão no âmbito quando o seu código JavaScript
é executado.
context.*Response object properties
Nome de propriedade | Descrição |
---|---|
headers |
Os cabeçalhos HTTP da mensagem de resposta como um mapeamento de |
Exemplo: var cookie = context.targetResponse.headers['Set-Cookie']; |
|
status |
O código de estado com a mensagem de estado como propriedade. O código de estado e a mensagem de estado estão disponíveis como propriedades. |
Exemplo: var status = context.targetResponse.status.code; // 200 var msg = context.targetResponse.status.message; // "OK" |
|
content |
O corpo HTTP (conteúdo de payload) da mensagem de resposta. O conteúdo da resposta tem os seguintes membros: context.targetResponse.content.asXML; context.targetResponse.content.asJSON; |
Usar a notação .asXML
Existe uma forma prática de percorrer um documento XML através da notação .asXML
.
Esta secção descreve como usar esta notação e em que se diferencia de request.content
e context.proxyRequest.content
.
Por exemplo:
request.content.asXML
ou
context.proxyRequest.content.asXML
Ambos os formulários *.content
e *.content.asXML
podem ser usados num contexto de string, e o JavaScript vai forçá-los a tornarem-se strings. No primeiro caso
(*.content
), a string inclui todas as declarações, bem como comentários XML. No último caso (*.content.asXML
), o valor da string do resultado é limpo de declarações e comentários.
Exemplo
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>
Além disso, pode usar o formulário .asXML
para percorrer a hierarquia XML, especificando os nomes dos elementos e atributos. Não é possível percorrer a hierarquia usando a outra sintaxe.
Depure com declarações print() de JavaScript
Se estiver a usar a política de JavaScript para executar código JavaScript personalizado, tenha em atenção que pode usar a função print() para enviar informações de depuração para a ferramenta de depuração. Esta função está disponível diretamente através do modelo de objeto JavaScript. Por exemplo:
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 o resultado, selecione Resultado de todas as transações na parte inferior da janela de depuração. Também pode encontrar o resultado na propriedade de depuração denominada stepExecution-stdout
.
Criar chamadas de JavaScript com httpClient
Use httpClient
para fazer vários pedidos HTTP assíncronos e paralelos a qualquer URL
a partir de código JavaScript personalizado executado num fluxo de proxy de API.
O objeto httpClient
é exposto pelo modelo de objeto JavaScript do Apigee.
Acerca de httpClient
O objeto httpClient
é exposto ao código JavaScript personalizado executado no Apigee
através do modelo de objeto JavaScript. Para anexar JavaScript personalizado a um proxy de API, use a
política JavaScript. Quando a política é executada, o código JavaScript personalizado é executado.
O objeto httpClient
é útil para desenvolver serviços compostos ou mashups. Por exemplo, pode consolidar várias chamadas de back-end num único método API.
Segue-se um padrão de utilização básico. Instancie um objeto Request, atribua-lhe um URL (por exemplo, a um serviço de back-end que quer chamar) e chame httpClient.send
com esse objeto Request.
var myRequest = new Request(); myRequest.url = "http://www.example.com"; var exchangeObj = httpClient.send(myRequest);
Referência httpClient
O cliente HTTP expõe dois métodos: get()
e send()
.
httpClient.get()
Um método prático para pedidos HTTP GET
simples, sem suporte para cabeçalhos HTTP.
Utilização
var exchangeObj = httpClient.get(url);
Devoluções
O método devolve um objeto exchange
. Este objeto não tem propriedades e expõe os seguintes métodos:
isError()
: (booleano) devolvetrue
se o httpClient não conseguir estabelecer ligação ao servidor. Os códigos de estado HTTP4xx
e5xx
resultam emisError()
false
, uma vez que a ligação foi concluída e foi devolvido um código de resposta válido. SeisError()
devolvertrue
, uma chamada paragetResponse()
devolve oundefined
JavaScript.isSuccess()
: (Booleano) Devolvetrue
se o envio tiver sido concluído e tiver êxito.isComplete()
: (Booleano) Devolvetrue
se o pedido estiver concluído.waitForComplete()
: pausa a discussão até que o pedido seja concluído (com êxito ou erro).getResponse()
: (objeto) devolve o objeto de resposta se ohttpClient.send()
estiver concluído e for bem-sucedido. O objeto devolvido tem os métodos e as propriedades idênticos ao objeto context.proxyResponse. Consulte o resumo do objeto de contexto.getError()
: (string) Se a chamada parahttpClient.send()
tiver resultado num erro, devolve a mensagem de erro como uma string.
Exemplo
Envie um objeto Request totalmente configurado que contenha as propriedades do pedido HTTP. Use uma chamada de retorno não bloqueadora para processar a resposta.
// 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 a política de JavaScript
Use a política JavaScript para anexar código JavaScript personalizado a um fluxo de proxy. Consulte a política de JavaScript.