ステップ 5: ポリシーを追加する

このページは ApigeeApigee ハイブリッドに適用されます。

Apigee Edge ドキュメントを表示する

前のステップでターゲット エンドポイントを変更し、プロキシにポリシーを追加する準備が整いました。

ポリシーは、API プロキシを介してメッセージ フローのさまざまなポイントに接続できる Apigee コンポーネントです。ポリシーは、メッセージの形式の変換、アクセス制御の適用、リモート サービスの呼び出し、ユーザーの認証、潜在的な脅威についてのメール コンテンツの調査などを行えます。

このチュートリアルでは、XMLtoJSON ポリシーをプロキシに追加します。このポリシーは、XML メッセージのペイロードを JSON に変換します。また、レスポンスの Content-Type ヘッダーも変更します。

プロキシ内のフローにポリシーを接続できます。フローはポリシーの実行方法を制御します。この例では、ポリシーを PreFlow という特別なフローに追加します。PreFlow のポリシーは、プロキシ内の他のポリシーの前に実行されます。この例を読むためにフローを詳細に理解する必要はありませんが、フローの詳細についてはフローによる API プロキシの制御をご覧ください。

新しいプロキシ エディタ

XMLtoJSON ポリシーをプロキシに追加するには、次の 2 つのステップを実行します。

ポリシーのインスタンスを作成する

ポリシーを使用するには、次に示すように、ポリシー テンプレートからポリシーの新しいインスタンスを作成する必要があります。

  1. Google Cloud コンソールの Apigee UI を使用している場合: [プロキシ開発] > [API プロキシ] を選択します。

    従来の Apigee UI を使用している場合: [Develop] > [API Proxies] を選択して、[Proxies] ペインでプロキシの環境を選択します。

  2. プロキシの一覧から、ポリシーを追加するプロキシを選択します。
  3. [Develop] タブをクリックします。

  4. 左側のペインで、[ポリシー] フォルダの横にある [+] ボタンをクリックします。
  5. [ポリシーの作成] ダイアログで、[Select policy type] フィールドをクリックし、[Mediation] まで下にスクロールし、[XML to JSON] を選択します。

  6. 必要に応じて、ポリシーの [名前] と [表示名] を変更できます。デフォルトでは、Apigee はポリシー名に短い接頭辞(この場合は X2J-)を提供します。接頭辞の後に、ダッシュで区切られた一連の記述的単語を追加できます。命名規則をご覧ください。

    [ポリシーの作成] ダイアログ。

    完了したら、[Create] をクリックしてポリシーを作成します。

[Develop] ビューの右側のペインに、XMLtoJSON ポリシーが表示されました。

[Develop] ビューに表示された XMLtoJSON ポリシー。

ペインの下半分には、ポリシーの XML コードが表示されます。

ポリシーの詳細を表示するには、ポリシー名の横にある情報アイコン(情報アイコン。)を選択し、[XML To JSON ポリシー] をクリックします。これでポリシーのリファレンス ページが表示されます。

ポリシー名を変更する

ポリシーの名前を変更するには:

  1. 左側のペインの [Policies] で、ポリシーを選択します。
  2. ポリシーの XML コードの <DisplayName> 要素に、ポリシーの説明的フレーズを追加します(ポリシー名の略記の後に change-xml-to-json など)。

    ポリシー名に change-xml-to-json を追加しました。

    これにより、[Policies] の下に表示されるポリシー名が自動的に更新されます。

    命名規則をご覧ください。

ポリシーを PreFlow のステップに接続する

XMLtoJSON ポリシーを作成したら、これを PreFlow のステップに接続できます。

  1. 左側のペインで [Proxy Endpoints] > [default] > [PreFlow] を選択します。

    プロキシ エディタで PreFlow のターゲット エンドポイントを選択します。

    注: すべての要素を表示するため、場合によっては右側のペインでビジュアル エディタを広げる必要があります。これを行うには、ビジュアル エディタとテキスト エディタの間の分割線をクリックして下に少しドラッグします。

  2. ビジュアル エディタの右下にある [Response] ペインの [PreFlow] の横にある [+] ボタンをクリックします。

    [Response] ペインの [PreFlow] の横にある [+] ボタンをクリックします。

  3. [Add policy step] ダイアログで、X2J-change-xml-to-json ポリシーを選択します。
  4. [Add] をクリックしてポリシーを適用します。

    X2J-change-xml-to-json ポリシーが [Response] ペインに表示されます。

    [Response] ペインに表示される XMLtoJSON ポリシー。

  5. [保存] をクリックし、現在のリビジョンに変更を加えて保存します。
  6. リビジョンに変更をデプロイするには、[デプロイ] をクリックし、API プロキシをデプロイするの手順を行います。

従来のプロキシ エディタ

XMLtoJSON ポリシーをプロキシに追加する

  1. ブラウザで Apigee UI を開き、ログインします。
  2. メイン ウィンドウで [API Proxies] をクリックし、プロキシを選択します。この例では、ステップ 2: API プロキシを作成するで作成したプロキシを選択します。
  3. [Develop] タブをクリックします。

    プロキシ エディタの [Develop] タブをクリックします。

    API プロキシ エディタが表示されます。

  4. [Navigator] ペインで、[Proxy Endpoints] > [default] > [PreFlow] をクリックします。

    フローエディタが表示されます。

    フローエディタ。

    さらに、[Code] ペインにはデフォルトのプロキシ エンドポイントの構成が表示されます。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ProxyEndpoint name="default">
      <Description/>
      <FaultRules/>
      <PreFlow name="PreFlow">
        <Request/>
        <Response/>
      </PreFlow>
      <PostFlow name="PostFlow">
        <Request/>
        <Response/>
      </PostFlow>
      <Flows/>
      <HTTPProxyConnection>
        <BasePath>/myproxy</BasePath>
        <Properties/>
        <VirtualHost>default</VirtualHost>
        <VirtualHost>secure</VirtualHost>
      </HTTPProxyConnection>
      <RouteRule name="default">
        <TargetEndpoint>default</TargetEndpoint>
      </RouteRule>
    </ProxyEndpoint>
  5. プロキシにポリシーを追加するには、レスポンス PreFlow にある [+ Step] ボタン(フローエディタの下半分)をクリックします。

    レスポンス PreFlow にある [+ Step] ボタン。

    [Add] ダイアログ ボックスに、フローに追加可能な分類済みのポリシーリストが表示されます。

    ポリシーリスト

  6. 下にスクロールして、[MEDIATION] カテゴリの [XMLtoJSON] ポリシーを選択します。
  7. デフォルト名をそのまま残し、[Add] をクリックします。

    Apigee が、新しいポリシーをレスポンスの PreFlow に接続します。

    新しいポリシーが、レスポンスの Preflow に接続しました。

    [Add] をクリックすると、次の処理が行われます。

    • [Navigator] ペインの [Policies] に新しいポリシーを追加します。
    • XMLtoJSON ポリシーを [Flow] ペインに追加します。
    • ポリシーの構成 XML を [Code] ペインに表示します。
  8. [保存] をクリックし、現在のリビジョンに変更を加えて保存します。
  9. 変更をデプロイするには、[概要] タブをクリックして [Deploy] ボタンをクリックします。

新しいポリシーをテストする

新しいポリシーをテストするには、ターミナル ウィンドウで次の curl コマンドを実行します。

curl https://YOUR_ENV_GROUP_HOSTNAME/myproxy

ここで、YOUR ENV_GROUP_HOSTNAME は環境グループのホスト名です。環境グループのホスト名を見つけるをご覧ください。

詳細については、API プロキシを呼び出すをご覧ください。

あるいは、ブラウザで同じ URL を開くこともできます。

次のようなレスポンスが返されます。

{
  "root": {
    "city": "San Jose",
    "firstName": "John",
    "lastName": "Doe",
    "state": "CA"
  }
}

レスポンスの本文がこのようにならない場合は、次の点を確認してください。

  1. ステップ 4: ターゲット エンドポイントを変更するで説明されているように、ターゲット エンドポイントは https://mocktarget.apigee.net/xml です。
    • Hello, Guest!」というレスポンスを受け取る場合、ターゲット エンドポイントの末尾に「/xml」を追加する必要があります。
    • 404 が返された場合は、apigee.com ではなく apigee.net にアクセスしていることを確認してください。
  2. プロキシは最新リビジョンがデプロイされます。API プロキシのデプロイAPI プロキシのデプロイ解除の説明に沿って、API プロキシを再デプロイしてみてください。

HTTP リクエスト ヘッダーとレスポンス ヘッダーを表示するには、curl-vs オプションを付けて詳細を有効にします(v はレスポンスの詳細を提供しますが、s はあまり重要でない一部の詳細を表示しません)。次の例は、プロキシの名前が myproxy であることを前提としています。

curl -vs https://YOUR_ENV_GROUP_HOSTNAME/myproxy  | python -m json.tool

次のようなレスポンスを受け取ります。レスポンスの Content-Type ヘッダーが application/json となっていることに注意してください。レスポンスを返送する前に、XMLtoJSON ポリシーによってヘッダーが変更されています。

*   Trying 10.20.30.40...
* TCP_NODELAY set
* Connected to apitest.acme.com (10.20.30.40) port 443 (#0)
...
> GET /myproxy HTTP/1.1
> Host: apitest.acme.com
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Fri, 25 May 2018 16:20:00 GMT
< Content-Type: application/json;charset=UTF-8
< Content-Length: 77
< Connection: keep-alive
< X-Powered-By: Apigee
< Access-Control-Allow-Origin: *
...
{ [77 bytes data]
{
  "root": {
    "city": "San Jose",
    "firstName": "John",
    "lastName": "Doe",
    "state": "CA"
  }
}

次のステップ

さらに機能を追加する