チュートリアル: JSON コンテンツのマッピング

このチュートリアルでは、メッセージの内容をある形式またはスキーマから、別の形式またはスキーマにマップする方法を説明します。

開始前に

このタスクを実行できるのは、以下のロールのいずれかを割り当てられているユーザーです。
  • カタログ所有者
  • 開発者
注: Sandboxカタログは、 DataPower® Gateway (v5 compatible)DataPower API Gateway 、またはその両方を使用するように設定する必要があります。 「カタログの作成と設定」 を参照してください。

このチュートリアルについて

このチュートリアルでは、以下のレッスンを行います。

新規 API の作成

新規 API を作成するには、以下のステップを実行します。

  1. API Managerにログインする。
  2. Home ページで、 Develop APIs and Products タイルをクリックします。

    または、左のパネルにある「 現像」 アイコンをクリックします。

    APIMスクリーン

  3. 開発 」ページで、 「追加 」>「 API 」をクリックします。

    API追加メニュー

  4. APIタイプの選択ページで
    1. 「OpenAPI 2.0」が選択されていることを確認します。
    2. New OpenAPI ラジオボタンを選択する。
    3. 次へ をクリックします。

      新規 API

  5. Create new OpenAPI 」ページで、APIに関する以下の情報を入力する。
    注: OpenAPI バージョンフィールドは事前定義されています。 このフィールドは更新できません。
    1. タイトルの欄に、 Mapper と入力する。

      名前」 フィールドには、 「タイトル」 フィールドに入力した値が入る。

    2. Version 欄に 1.0.0 と入力する。
    3. ベース・パス ・フィールドに /map と入力する。
    4. 次へ をクリックします。

      APIの詳細

  6. セキュア」 セクションで
    1. クライアント ID を使用して保護する 」および「 CORS 」のチェックボックスが事前に選択されています。 チェックボックスの選択は外さないでください。
    2. 次へ をクリックします。

      Secure API

      新しいAPIが作成されるにつれ、進捗状況が表示される。 APIが作成されると、Summaryが表示される。

  7. Summary セクションで、 Edit APIをクリックする。

    新しいAPIの概要

    API 定義のドラフト用の Design タブが表示されます。

  8. 左のパネルで、 Consumes をクリックする。
  9. 右パネルの「 Consumes」 セクション、
    1. Add +をクリックする。
    2. Add schema ダイアログ・ボックスで、 Mime Type (optional) ドロップダウン・リストから application/json を選択し、 Add をクリックする。

      スキーマの追加

  10. 左のパネルで、 Producesをクリックする。
  11. 右パネルの Produces セクション、
    1. Add +をクリックする。
    2. Add schema ダイアログ・ボックスで、 Mime Type (optional) ドロップダウン・リストから application/json を選択し、 Add をクリックする。

      MIMEタイプ

  12. 左のパネルで、 Pathsをクリックする。
  13. 右パネルの「 パス」 セクション、
    1. Add +をクリックする。
    2. パス名フィールドに「 /jsonmap 」と入力し、「 追加 」をクリックする。

      パス

  14. 左側のパネルで、新しく作成したパス (/jsonmap )の下、 Operationsの横にある + アイコンをクリックする。

    Add schema ダイアログ・ボックスが表示されます。

  15. スキーマの追加ダイアログ・ボックスで、以下のタスクを実行する。
    1. 動詞(キー)(オプション) フィールドに、 get と入力する。
    2. Operation(オプション) フィールドに「 POST 」と入力する。
    3. 追加 をクリックします。

      操作フィールド

  16. 左のパネルの 「パラメータ」の横にある 「+」 アイコンをクリックする。

    Add schema ダイアログ・ボックスが表示されます。

  17. スキーマの追加ダイアログ・ボックスで、以下のタスクを実行する。
    1. Name フィールドに body と入力する。
    2. Required チェックボックスを選択します。
    3. Located Inのドロップダウンリストから、 body を選択します。
    4. 追加 をクリックします。

      本文

  18. スキーマ・ セクションまでスクロールダウンし、「 表示 」をクリックする。
  19. Schema セクションで、以下のタスクを実行する。
    1. タイトル(オプション)にはbody と入力してください。
    2. Type drop down listから stringを選択する。
    3. 右上の「 保存 」をクリックする。

      スキーマ

  20. 左側のパネルで、 「パス 」>「 操作 」>「 応答」 を展開します。
  21. 応答] で、[ 200] をクリックします。
  22. 右パネルの「 200」 セクションで、以下のタスクを実行する。
    1. Name (Key)200 と入力する。
    2. 説明フィールドには、 200 OK と入力する。
    3. 右上の「 保存 」をクリックする。

      名前と説明

JSON コンテンツのマップ

  1. ゲートウェイ」 タブをクリックします。
  2. キャンバス上の既存のポリシーを削除するには、そのポリシーにカーソルを合わせ、 [削除 ] アイコン 「削除」アイコンをクリックします。
    注: DataPower API Gateway を使用している場合、ポリシーは invoke ポリシーであり、 DataPower Gateway (v5 compatible) を使用している場合、ポリシーは proxy ポリシーである。

    ポリシー・ノード

  3. パレットを表示するには、右側のパネルにあるプラスアイコンをクリックしてください プラス・アイコン

    プラスアイコンでポリシーを追加

  4. Transforms 列で、 map を選択する。

    マップポリシーノードがキャンバスに表示されます。

    マップ・ポリシー・ノード

  5. マップポリシー ノードをクリックして、設定ダイアログ ボックスを開きます。
  6. 「入力」 の横にある「 入力の編集 」アイコンをクリックします。 アイコンの編集

    入力の編集

  7. Add inputをクリックする。
  8. 以下の値を入力して、マップ入力設定を完了する
    1. コンテキスト変数フィールドに、 request.body と入力する。
    2. Name フィールドに input と入力する。
    3. コンテンツタイプのドロップダウンリストから、 application/json を選択します。
    4. 定義」のドロップダウンリストから、 Inline schema を選択する。

      Provide a schema ポップアップ・ウィンドウが表示されます。

      スキーマを提供するためのポップアップウィンドウ

    5. Provide a schema ポップアップ・ウィンドウで、以下のタスクを実行する。
      1. サンプルJSONから生成 ]タブを選択します。
      2. 以下のサンプル JSON をボックスに貼り付けます。
        {"order":
        {"customer":
        {"name":
        {
        "firstname":"John",
        "middlename":"Q",
        "lastname":"Smith"
        },
        "address":
        {
        "line1":"550 King St",
        "line2":"Dept 5",
        "city":"Littleton",
        "state":"MA",
        "country":"USA",
        "code":"01460"
        }
        }
        },
        "items":
        [{"item":"shoes", "color":"black", "qty":2, "price":23.50},
        {"item":"socks", "color":"argyle", "qty":2, "price":3.95},
        {"item":"pants", "color":"grey", "qty":1, "price":48.00}]
        }
      3. 生成 」をクリックする。

        サンプル JSON からの生成

      4. 「完了」をクリックします。

        ポップアップウィンドウが閉じました。

    6. マップポリシーの設定ダイアログボックスで、[ 完了] をクリックしてマップの設定を完了します。
  9. 出力 」列の横にある 「出力の編集 」アイコン アイコンの編集をクリックします。

    出力の編集

  10. Add outputをクリックする。
  11. 以下の値を入力して、マップ出力設定を完了する
    1. コンテキスト変数フィールドに、 message.body と入力する。
    2. Name フィールドに output と入力する。
    3. コンテンツタイプのドロップダウンリストから、 application/json を選択します。
    4. 定義」のドロップダウンリストから、 Inline schema を選択する。

      Provide a schema ポップアップ・ウィンドウが表示されます。

      スキーマ・ポップアップ・ウィンドウの提供

    5. Provide a schema ポップアップ・ウィンドウで、以下のタスクを実行する。
      1. サンプルJSONから生成 ]タブを選択します。
      2. 以下のサンプル JSON をボックスに貼り付けます。
        {"order":
        {
        "date":"12-12-12",
        "customer": "John Smith",
        "address":
        {
        "street":"king",
        "citystatezip":"lit MA 01469",
        "country":"USA"
        },
        "items":[{"type":"shoes", "color":"black", "qty":2, "price":23.50}]
        }
        }
      3. 生成 」をクリックする。

        サンプル JSON からの生成

    6. 「完了」をクリックします。

      ポップアップウィンドウが閉じました。

    7. マップポリシーの設定ダイアログボックスで、[ 完了] をクリックしてマップの設定を完了します。

      地図構成

  12. 保存 をクリックします。
  13. マップ出力設定ウィンドウの出力欄で、以下のタスクを実行する。
    1. 日付のラジオボタンを選択します。

      Configure mapping ダイアログボックスが表示されます。

      1. マッピングの設定ダイアログボックスで、以下のサンプル JavaScript を入力します。

        new Date().toGMTString()

      2. 「完了」をクリックします。

        マッピングの設定

    2. 入力」 列で 「firstname」 ラジオボタンを選択し、 「出力」 列で「 customer」 ラジオボタンを選択します。

      Configure mapping ダイアログボックスが表示されます。

      1. マッピングの設定ダイアログボックスで、 デフォルト値として空の文字列チェックボックスを選択します。
      2. 「完了」をクリックします。
    3. 入力欄で 「middlename」 ラジオボタンを選択し、 出力欄で「 customer 」ラジオボタンを選択する。

      Configure mapping ダイアログボックスが表示されます。

      1. マッピングの設定ダイアログボックスで、 デフォルト値として空の文字列チェックボックスを選択します。
      2. 「完了」をクリックします。
    4. Input」 列で 「lastname」 ラジオボタンを選択し、「 Output」 列で「 customer」 ラジオボタンを選択します。

      Configure mapping ダイアログボックスが表示されます。

      1. マッピングの設定ダイアログボックスで、 デフォルト値として空の文字列チェックボックスを選択します。
      2. 「完了」をクリックします。

        マッピングの設定

    5. 出力欄で、 顧客のラジオボタンを選択します。

      Configure mapping ダイアログボックスが表示されます。

      1. Configure mapping ダイアログ・ボックスの Value フィールドに、以下のサンプル・コードを入力する。
        var name = $(input.order.customer.name.firstname) + ' '; 
          if($(input.order.customer.name.middlename)) {
          name += $(input.order.customer.name.middlename) + ' ';}
          name += $(input.order.customer.name.lastname);
          name
      2. 「完了」をクリックします。

        空ストリングをデフォルト値にする

    6. 入力 」列で、「 住所 」>「 line1 」のラジオボタンを選択し、次に 「出力 」列で「 通り 」のラジオボタンを選択します。

      Configure mapping ダイアログボックスが表示されます。

      1. マッピングの設定ダイアログボックスで、 デフォルト値として空の文字列チェックボックスを選択します。
      2. 「完了」をクリックします。
    7. 入力 」列で、「 住所 」>「 line2 」のラジオボタンを選択し、次に 「出力 」列で「 通り 」のラジオボタンを選択します。

      Configure mapping ダイアログボックスが表示されます。

      1. マッピングの設定ダイアログボックスで、 デフォルト値として空の文字列チェックボックスを選択します。
      2. 「完了」をクリックします。

        空ストリングをデフォルト値にする

    8. 出力欄で、 通りのラジオボタンを選択する。

      Configure mapping ダイアログボックスが表示されます。

      1. Configure mapping ダイアログ・ボックスの Value フィールドに、以下のサンプル・コードを入力する。
        var street = $(input.order.customer.address.line1) + ' '; 
          if($(input.order.customer.address.line2)) {
          street += $(input.order.customer.address.line2);}
          street
      2. 「完了」をクリックします。

        マッピングの構成

    9. 入力」 欄で 「市区町村」のラジオボタンを選択し、 「出力」 欄で 「citystatezip」のラジオボタンを選択する。

      Configure mapping ダイアログボックスが表示されます。

      1. マッピングの設定ダイアログボックスで、 デフォルト値として空の文字列チェックボックスを選択します。
      2. 「完了」をクリックします。
    10. 入力」 欄で 「州」 ラジオボタンを選択し、 「出力」 欄で「 citystatezip」 ラジオボタンを選択する。

      Configure mapping ダイアログボックスが表示されます。

      1. マッピングの設定ダイアログボックスで、 デフォルト値として空の文字列チェックボックスを選択します。
      2. 「完了」をクリックします。
    11. 入力」 列で「 コード」 ラジオボタンを選択し、 「出力」 列で「 citystatezip」 ラジオボタンを選択する。

      Configure mapping ダイアログボックスが表示されます。

      1. マッピングの設定ダイアログボックスで、 デフォルト値として空の文字列チェックボックスを選択します。
      2. 「完了」をクリックします。

        マッピングの構成

    12. 出力欄で、 通りのラジオボタンを選択する。

      Configure mapping ダイアログボックスが表示されます。

      1. Configure mapping ダイアログ・ボックスの Value フィールドに、以下のサンプル・コードを入力する。
        $(1) + " " + $(2) + " " + $(3)
        注: 変数参照は位置指定であり、$(1)は最初にマップされた値(input.order.customer.city )を指し、以下同様である。
      2. 「完了」をクリックします。

        空ストリングをデフォルト値にする

    13. 入力 」列で、「 項目 > 項目 」のラジオボタンを選択し、続いて「 出力 」列で「 項目 」のラジオボタンを選択します。

      Configure mapping ダイアログボックスが表示されます。

      1. マッピングの設定ダイアログボックスで、 デフォルト値として空の文字列チェックボックスを選択します。
      2. 「完了」をクリックします。

        マッピングの設定

    14. 出力列の下にある、2番目の追加プロパティをクリックする。

      プロパティーの追加

      1. 最初のフィールドに total と入力する。
      2. ドロップダウンリストから、 float を選択する。
      3. アイコンをクリックする

        浮動小数点

    15. 入力欄で項目のラジオボタンを選択し、 出力欄で合計のラジオボタンを選択する。

      Configure mapping ダイアログボックスが表示されます。

      1. Configure mapping ダイアログ・ボックスの Value フィールドに、以下のサンプル・コードを入力する。
        $(0) + ($(input.items.price) * $(input.items.qty))

        空ストリングをデフォルト値にする

      2. 「完了」をクリックします。

        コンフィギュレーションマッピング

    16. マップ ポリシー ノードの出力ページで、[ 保存] をクリックします。
  14. ソースをクリックする。
  15. スクロールダウンし、合計が計算されるコードを見つけます。

    合計の計算

  16. コード foreach: input.items のある新規行を挿入します。

    調整後の総計の計算

  17. 保存 をクリックします。

API 定義のテスト

注: クロスオリジンリソース共有( CORS )の制限により、 macOS Catalinaプラットフォーム上のChromeまたはSafariブラウザでは、アセンブリテストツールを使用できません。

API Manager テストツールを使用してAPI定義をテストするには、以下の手順を実行します:

  1. Assembleをクリックする。

    組み立てページ

  2. テスト 」アイコンをクリックしてください テストのアイコン。 テスト・ツールが開きます。
  3. ActivateAPIをクリックする。

    テストセットアップ

  4. Operation フィールドで、 post /jsonmapを選択する。

    テストセレクトオペ

  5. 「本文」フィールドに、以下の JSON テキストを入力します。
    {"order":
    {"customer":
    {"name":
    {
    "firstname":"John",
    "middlename":"Q",
    "lastname":"Smith"
    },
    "address":
    {
    "line1":"550 King St",
    "line2":"Dept 5",
    "city":"Littleton",
    "state":"MA",
    "country":"USA",
    "code":"01460"
    }
    }
    },
    "items":
    [{"item":"shoes", "color":"black", "qty":2, "price":23.50},
    {"item":"socks", "color":"argyle", "qty":2, "price":3.95},
    {"item":"pants", "color":"grey", "qty":1, "price":48.00}]
    }

    テストセレクトオペ

  6. Invokeをクリックする。 応答が表示されます。 datestreetcitystatezip、および total の各フィールドの値は、以前に定義したマッピング式を反映していることに注意してください。
    注: 自己署名証明書を使用している場合、提供された URL にアクセスするよう促されることがある。 リンクをクリックし、証明書を承認してから API Managerに戻り、再度 Invokeをクリックする。

    テスト成功

API 定義の管理

新しいAPIが期待通りに動作するようになったので、その管理を始めることができる。 即時のオプションを確認するには、以下の手順を実行します。

  1. ナビゲーション パネルで、[ 開発] アイコン アイコンの編集をクリックします。

    ナビゲーションパネルから開発する

  2. Mapper API の横にあるメニュー アイコン オプションアイコン をクリックし、 「ダウンロード」 を選択します。

    ダウンロード・オプション

このチュートリアルで実行したこと

  • 新規 API の作成
  • ある JSON スキーマから別のスキーマにコンテンツをマップ