JSON POST リクエスト
ユーザ定義の Web サービスを、REST Web サービスとしてエクスポーズし、JSON 入力を受け取る POST メソッドを持つように設定できます。JSON POST リクエストには Content-Type:application/json
を指定し、以下の形式を使用します。
フラット データ
POST を使用してフラット データを Web サービスに送信するためのリクエスト本体の形式は次のとおりです。
{
"InputStageName":
{
"InputDataType": [
{
"FieldName1": "FieldValue1",
"FieldName2": "FieldValue2"
}
]
}
}
説明:
- InputStageName
- Enterprise Designer のキャンバス上に表示される入力ステージの名前。デフォルトのステージ名は Input です。
- InputDataType
- レコードレベルのエンティティに与えられる名前。この値は、データフローの Input ステージにおいて、 [入力フィールド] タブの [データ タイプ名] フィールドで指定されます。デフォルトのレコードレベル エンティティ名は Row です。
- FieldName1 と FieldName2
- サービスの Input ステージで定義されている入力フィールドの名前。
- FieldValue1 と FieldValue2
- 対応するフィールドに入力され、Web サービスに送信する入力データ。
リスト データ
リスト データは、親フィールドの下でグループ化されているフィールドの階層グループ構造で構成されます。
注: リスト データを入力として使用するには、GET リソースを持たない REST Web サービスとしてサービスがエクスポーズされている必要があります。サービスに GET リソースがある場合は、サービスのエクスポーズ時に Enterprise Designer においてエラーが発生します。GET が階層フィールドをサポートしないためです。
POST を用いてリスト データを Web サービスに送信するための形式は次のとおりです。
{
"InputStageName":
{
"InputDataType": [
{
"ListField1":[
{"SubfieldName1": "SubfieldValue1"},
{"SubfieldName2": "SubfieldValue2"}
]
}
]
}
}
説明:
- InputStageName
- Enterprise Designer のキャンバス上に表示される入力ステージの名前。デフォルトのステージ名は Input です。
- InputDataType
- レコードレベルのエンティティに与えられる名前。この値は、データフローの Input ステージにおいて、 [入力フィールド] タブの [データ タイプ名] フィールドで指定されます。デフォルトのレコードレベル エンティティ名は Row です。
- ListField1
- サービスの Input ステージで定義されている階層フィールドの名前。
- SubfieldName1 と SubfieldName2
- リスト フィールドを構成する子フィールドの名前。
- SubfieldValue1 と SubfieldValue2
- Web サービスに送信する入力データ。
ユーザ フィールド
Web サービスでは使用されない余分なフィールドを、サービスを介して渡すことができます。こうしたフィールドは、変更されずに応答の user_fields
セクションで返されます。リクエストで供給するユーザ フィールドは、サービス データフローの Input ステージで定義する必要はありません。
{
"InputStageName":
{
"InputDataType": [
{
"user_fields": [
{
"name": "FieldName1",
"value": "FieldValue1"
},
{
"name": "FieldName2",
"value": "FieldValue2"
}]
}
]
}
}
説明:
- InputStageName
- Enterprise Designer のキャンバス上に表示される入力ステージの名前。デフォルトのステージ名は Input です。
- InputDataType
- レコードレベルのエンティティに与えられる名前。この値は、データフローの Input ステージにおいて、 [入力フィールド] タブの [データ タイプ名] フィールドで指定されます。デフォルトのレコードレベル エンティティ名は Row です。
- FieldName1 と FieldName2
- パススルー フィールドの名前。
- FieldValue1 と FieldValue2
- パススルー フィールドへの入力データ。
オプション
リクエストでオプションを指定することによって、サービス データフローで指定されたデフォルトのオプションをオーバーライドできます。ユーザ定義の Web サービスに対してオプションを指定できるのは、データフローがオプションを受け付けるように設定されている場合のみです。リクエストにおいてオプションを受け付けるようにサービスを設定するには、Enterprise Designer でそのサービスを開き、
を選択します。リクエストで処理オプションを指定するための形式は次のとおりです。
"options" : {
"OptionName1" : "Value1"
},
説明:
- OptionName1
- オプション名。サービスに対する有効なオプションの一覧については、そのサービスの WADL を参照するか、Enterprise Designer でそのサービスを開いて を選択します。
- OptionValue1
- オプションに対する有効な値。有効値の一覧については、Enterprise Designer でそのサービスを開いて を選択します。
POST を用いた JSON リクエストの例
以下に、Web サービスに対する POST を用いた JSON リクエストにおいて、オプション、フラット フィールド、リスト フィールド、ユーザ定義フィールドを使用する例を示します。
{
"options" : {
"OutputCasing" : "U"
},
"Input":
{
"Address": [
{
"AddressLine1": "1825 Kramer Ln",
"City": "Austin",
"StateProvince": "TX",
"Accounts": [
{
"AccountNumber": "120993",
"ExpirationDate": "10-3-2017"
},
{
"AccountNumber": "898732",
"ExpirationDate": "8-13-2016"
}
],
"user_fields": [
{
"name": "Note1",
"value": "Prefers decaffeinated coffee"
},
{
"name": "Note2",
"value": "Requests east facing window"
}]
}
]
}
}
この例の内容は次のとおりです。
- OutputCasing は、Web サービスがエクスポーズするオプションで、出力を大文字と小文字のどちらで返すかを制御します。この例では、大文字を表す U が設定されています。
- Input は、データフローの Input ステージのラベルです。Enterprise Designer のキャンバス上に表示されているものと同じです。
- Address は、レコードレベル エンティティの名前です。データフローの Input ステージにおいて、[入力フィールド] タブの [データ タイプ名] フィールドで指定されたものです。
- AddressLine1、City、および StateProvince は、フラット フィールドです。
- Accounts は、階層 ("リスト") フィールドです。AccountNumber と ExpirationDate というサブフィールド名が含まれています。この例では、2 つのアカウントが含まれています。
- user_fields は、ユーザ定義フィールドを含みます。これらはパススルーされ、Web サービスによって変更されることなく出力に返されます。