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 です。
FieldName1FieldName2
サービスの Input ステージで定義されている入力フィールドの名前。
FieldValue1FieldValue2
対応するフィールドに入力され、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 ステージで定義されている階層フィールドの名前。
SubfieldName1SubfieldName2
リスト フィールドを構成する子フィールドの名前。
SubfieldValue1SubfieldValue2
Web サービスに送信する入力データ。

ユーザ フィールド

Web サービスでは使用されない余分なフィールドを、サービスを介して渡すことができます。こうしたフィールドは、変更されずに応答の user_fields セクションで返されます。リクエストで供給するユーザ フィールドは、サービス データフローの Input ステージで定義する必要はありません。

{
  "InputStageName": 
  {
    "InputDataType": [
      {
        "user_fields": [
        {
          "name": "FieldName1",
          "value": "FieldValue1"
        },
        {
          "name": "FieldName2",
          "value": "FieldValue2"
        }]
      }
    ]
  }
}

説明:

InputStageName
Enterprise Designer のキャンバス上に表示される入力ステージの名前。デフォルトのステージ名は Input です。
InputDataType
レコードレベルのエンティティに与えられる名前。この値は、データフローの Input ステージにおいて、 [入力フィールド] タブの [データ タイプ名] フィールドで指定されます。デフォルトのレコードレベル エンティティ名は Row です。
FieldName1FieldName2
パススルー フィールドの名前。
FieldValue1FieldValue2
パススルー フィールドへの入力データ。

オプション

リクエストでオプションを指定することによって、サービス データフローで指定されたデフォルトのオプションをオーバーライドできます。ユーザ定義の 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 ステージにおいて、[入力フィールド] タブの [データ タイプ名] フィールドで指定されたものです。
  • AddressLine1City、および StateProvince は、フラット フィールドです。
  • Accounts は、階層 ("リスト") フィールドです。AccountNumberExpirationDate というサブフィールド名が含まれています。この例では、2 つのアカウントが含まれています。
  • user_fields は、ユーザ定義フィールドを含みます。これらはパススルーされ、Web サービスによって変更されることなく出力に返されます。