DataPower API Gateway のみ

message オブジェクトでの添付ファイルの操作

message オブジェクトは、メッセージ添付ファイルを操作するための API およびプロパティーを提供します。

アセンブリーに解析ポリシーが含まれている場合、マルチパート・メッセージの要求または応答内の添付ファイルを操作してクライアントに返送することができます。 デフォルトでは、応答はマルチパート形式でクライアントに送信されます。
制約事項: 既存の添付ファイルが含まれていない要求または応答に添付ファイルを追加することはできません。
あるいは、 context.message.attachments をクリアして添付ファイルを破棄し、 message.body のみをクライアントに送信することもできます。
注: アセンブリーに構文解析ポリシーが含まれていない場合は、以下の処理ルールが適用されます。
  • message.body 変数が変更されていないマルチパート要求の場合、invoke ポリシーは添付ファイルを保持してサーバーに渡します。
  • message.body 変数が変更されていないマルチパート要求または応答の場合、結果 API アクションは最終応答として添付ファイルを渡します。
  • message.body 変数を変更すると、添付ファイルは破棄されます。

添付ファイルの取得

GatewayScript の例
索引ロケーションごとに添付ファイルを取得します。
context.message.attachments[1]
Content-Id ヘッダー内の pic1 の値を検索して、添付ファイルを取得します。
context.message.attachments['cid:pic1']
Content-Location ヘッダー内の uri1 の値を検索して、添付ファイルを取得します。
context.message.attachments['uri1']

メッセージへの添付ファイルの追加

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

配列内の添付ファイル数の取得

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

メッセージからの添付ファイルの削除

GatewayScript の例
索引ロケーションごとに添付ファイルを削除します。
context.message.attachments.remove(1)
Content-Id ヘッダーの pic1 の値を調べて、添付ファイルを削除します。
context.message.attachments.remove('cid:pic1')
Content-Location ヘッダーの uri1 の値を調べて、添付ファイルを削除します。
context.message.attachments.remove('uri1')

添付ファイルの本文の読み取り、アクセス、および操作

GatewayScript の例
添付ファイルのペイロードをバイナリーで読み取り、その内容を BufferBuffersJSON、または 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){})
コンテンツ Hello world を添付ファイルの現在のペイロードに書き込むには、以下のようにします。
message.attachments[0].body.write("Hello world")

添付ファイルのヘッダーの操作

GatewayScript の例
添付ファイル・ヘッダー全体の値を取得するには、以下のようにします。
context.message.attachments[0].headers
添付ファイルの名前付きヘッダーの値を取得するには、以下のようにします。
context.message.attachments[0].header.get();
添付ファイルの現在の Content-Type ヘッダーを削除します。
context.message.attachments[0].header.remove('Content-Type');
添付ファイルの名前付きヘッダーの値を設定できます。 ヘッダーは、合体および非合体にすることができます。 次のコードを例に取ってみましょう。
context.message.attachments[0].header.set('MyCookie', ['cookie1', 'cookie2']);
値の型が配列の場合、 MyCookie ヘッダーは連結されず、 HTTP ヘッダーに異なるエントリとして存在します。
MyCookie: cookie1
MyCookie: cookie2