Somente DataPower API Gateway

Manipulando anexos em um objeto message

O objeto message fornece APIs e propriedades para manipular os anexos de mensagens

Se o conjunto incluir uma política de análise, os anexos na solicitação ou resposta de uma mensagem de várias partes poderão ser manipulados e enviados de volta para o cliente Por padrão, a resposta é enviada para o cliente em formato de várias partes
Restrição: Não é possível adicionar um anexo a uma solicitação ou resposta que não contenha anexos existentes.
Como alternativa, é possível limpar context.message.attachments para descartar os anexos e enviar apenas message.body para o cliente
Nota: Se o conjunto não incluir uma política de análise, as seguintes regras de processamento serão aplicadas.
  • Para uma solicitação multipartes em que a variável message.body não é alterada, a política de chamada mantém e transmite os anexos para o servidor.
  • Para uma solicitação ou resposta de várias partes em que a variável message.body não é alterada, a ação da API de resultado passa os anexos como a resposta final.
  • Se a variável message.body for alterada, os anexos serão descartados.

Recuperando um anexo

Exemplos de GatewayScript
Recupere o anexo por local do índice
context.message.attachments[1]
Recupere o anexo consultando o valor de pic1 no cabeçalho Content-Id
context.message.attachments['cid:pic1']
Recupere o anexo consultando o valor de uri1 no cabeçalho Content-Location
context.message.attachments['uri1']

Anexando um anexo à mensagem

GatewayScript example
var headers = JSON.parse ( '{ "Content-Type": "text/xml; charset=utf-8", "Content-Id": "<data>" }' );
context.message.attachments.append(headers, 'Hello world.');

Recuperando o número de anexos em uma matriz

Exemplo
for (var i = 0; i < context.message.attachments.count; i++) {
  context.message.attachments[i].header.set('X-Foo', 'bar');
}

Removendo um anexo da mensagem.

Exemplos de GatewayScript
Remova o anexo por local do índice
context.message.attachments.remove(1)
Remova o anexo consultando o valor pic1 no cabeçalho Content-Id .
context.message.attachments.remove('cid:pic1')
Remova o anexo consultando o valor uri1 no cabeçalho Content-Location .
context.message.attachments.remove('uri1')

Ler, acessar e manipular o corpo de um apego

Exemplos de GatewayScript
Para ler a carga útil de um anexo em binário e retornar o conteúdo como um objeto Buffer, Buffers, JSONou XML NodeList :
context.message.attachments[0].body.readAsBuffer(function(errorObject,bufferObject){})
context.message.attachments[0].body.readAsBuffers(function(errorObject,buffersObject){})
context.message.attachments[0].body.readAsJSON(function(errorObject,jsonObject){})
context.message.attachments[0].body.readAsXML(function(errorObject,nodeList){})
Para gravar o conteúdo Hello world na carga útil atual do anexo:
message.attachments[0].body.write("Hello world")

Manipulando os cabeçalhos de um anexo

Exemplos de GatewayScript
Para recuperar os valores dos cabeçalhos de conexão inteiros:
context.message.attachments[0].headers
Para recuperar o valor do cabeçalho nomeado do anexo:
context.message.attachments[0].header.get();
Para excluir o cabeçalho atual do Content-Type do anexo,
context.message.attachments[0].header.remove('Content-Type');
É possível configurar o valor do cabeçalho nomeado de um anexo O cabeçalho pode ser unido e não unido. Veja o código a seguir como exemplo.
context.message.attachments[0].header.set('MyCookie', ['cookie1', 'cookie2']);
Se o tipo de valor for uma matriz, o cabeçalho MyCookie não será coalescido e estará presente com entradas diferentes no cabeçalho HTTP.
MyCookie: cookie1
MyCookie: cookie2