Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMIME タイプ: multipart/form-data
ID: multipart
DataWeave ではマルチパートサブタイプ (特に form-data
) がサポートされます。この形式では、各パートの形式に関係なく、1 つのペイロード内で複数の異なるデータパートを処理できます。パートの開始と終了を区別するには、境界を使用します。各パートのメタデータはヘッダーを介して追加できます。
DataWeave では、特定の Object
構造を使用して、マルチパートドキュメントを表します。
type Multipart = {
preamble?: String,
parts: {
_?: MultipartPart
}
}
type MultipartPart = {
headers?: {
"Content-Disposition"?: {
name: String,
filename?: String
},
"Content-Type"?: String
},
content: Any
}
次の例は、マルチパート形式の使用方法を示しています。
次の例は、DataWeave で単純なマルチパートコンテンツを読み取る方法を示しています。
マルチパート入力は、DataWeave ソースへのペイロードとして機能します。
--34b21
Content-Disposition: form-data; name="text"
Content-Type: text/plain
Book
--34b21
Content-Disposition: form-data; name="file1"; filename="a.json"
Content-Type: application/json
{
"title": "Java 8 in Action",
"author": "Mario Fusco",
"year": 2014
}
--34b21
Content-Disposition: form-data; name="file2"; filename="a.html"
Content-Type: text/html
<title> Available for download! </title>
--34b21--
この DataWeave スクリプトは、マルチパート入力ペイロードを DataWeave (dw) 形式に変換します。
%dw 2.0
output application/dw
---
payload
この出力は、DataWeave (dw) 形式でマルチパート入力がどのように表されるのかを示しています。raw
および content
値は、簡潔にするために短縮されています。完全な値はこれよりも長くなります。
{
parts: {
text: {
headers: {
"Content-Disposition": {
name: "text",
subtype: "form-data"
},
"Content-Type": "text/plain"
},
content: "Book" as String {
raw: "Qm9vaw==" as Binary {
base: "64"
},
encoding: null,
mediaType: "text/plain",
mimeType: "text/plain"
}
},
file1: {
headers: {
"Content-Disposition": {
name: "file1",
filename: "a.json",
subtype: "form-data"
},
"Content-Type": "application/json"
},
content: {
title: "Java 8 in Action",
author: "Mario Fusco",
year: 2014
} as Object {
raw: "ewogICJ0aXRsZSI6ICJKYXZhI...==" as Binary {
base: "64"
},
encoding: null,
mediaType: "application/json",
mimeType: "application/json"
}
},
file2: {
headers: {
"Content-Disposition": {
name: "file2",
filename: "a.html",
subtype: "form-data"
},
"Content-Type": "text/html"
},
content: "PCFET0NUWVBFIGh0bWw+Cjx0aXRsZT4KI...==" as Binary {
base: "64"
}
}
}
}
DataWeave スクリプト内で、parts
要素を選択し、任意のパートのデータにアクセスし、変換できます。操作は配列に基づくことができます。また、パートを参照するための名前がパートに設定されている場合は、キーに基づくことができます。パートのデータには content
キーワードを介してアクセスでき、ヘッダーには headers
キーワードを介してアクセスできます。
次の例は、個別の DataWeave スクリプトへの入力として機能します。 3 つのパートで構成される 34b21
境界を含む未加工の multipart/form-data
ペイロードを以下に示します。
text
という名前の text/plain
file1
という名前の application/json
ファイル (a.json
)
file2
という名前の text/html
ファイル (a.html
)
--34b21
Content-Disposition: form-data; name="text"
Content-Type: text/plain
Book
--34b21
Content-Disposition: form-data; name="file1"; filename="a.json"
Content-Type: application/json
{
"title": "Java 8 in Action",
"author": "Mario Fusco",
"year": 2014
}
--34b21
Content-Disposition: form-data; name="file2"; filename="a.html"
Content-Type: text/html
<!DOCTYPE html>
<title>
Available for download!
</title>
--34b21--
DataWeave がパートのリスト (各パートにヘッダーとコンテンツが含まれる) を含むオブジェクトを構築するマルチパートコンテンツを生成できます。次の DataWeave スクリプトでは、ペイロード内で HTML データを使用できる場合に、(以前に分析した) 未加工のマルチパートデータを生成します。
%dw 2.0
output multipart/form-data
boundary='34b21'
---
{
parts : {
text : {
headers : {
"Content-Type": "text/plain"
},
content : "Book"
},
file1 : {
headers : {
"Content-Disposition" : {
"name": "file1",
"filename": "a.json"
},
"Content-Type" : "application/json"
},
content : {
title: "Java 8 in Action",
author: "Mario Fusco",
year: 2014
}
},
file2 : {
headers : {
"Content-Disposition" : {
"filename": "a.html"
},
"Content-Type" : payload.^mimeType
},
content : payload
}
}
}
パートの名前が Content-Disposition
ヘッダーに明示的に提供されていない場合は、キーによりパートの名前が決まります。また、DataWeave は、サポートされる形式からのコンテンツを処理できるだけでなく、HTML など、サポートされない形式への参照からコンテンツを処理できます。
DataWeave では、マルチパート形式の次の設定プロパティがサポートされています。
マルチパート形式では、入力データの読み込みの指示を提供するプロパティを使用できます。
パラメーター | 型 | デフォルト | 説明 |
---|---|---|---|
|
|
|
マルチパートの |
|
|
このプロパティにデフォルト値はありません。 |
|