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

ターゲット エンドポイントを変更すると、プロキシにポリシーを追加する準備が整います。

ポリシーは、API プロキシを介してメッセージ フロー内のさまざまなポイントに接続できる Edge コンポーネントです。ポリシーは、メッセージの形式の変換、アクセス制御の実施、リモート サービスの呼び出し、ユーザーの認可、潜在的な脅威に関するメッセージ コンテンツの調査など、多くのことを行うことができます。

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

XML to JSON ポリシーをプロキシに追加するには:

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

    Edge に API Proxy Editor が表示されます。

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

    Edge にフローエディタの未加工バージョンが表示されます。

    さらに、Edge の [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>/getstarted</BasePath>
        <Properties/>
        <VirtualHost>default</VirtualHost>
        <VirtualHost>secure</VirtualHost>
      </HTTPProxyConnection>
      <RouteRule name="default">
        <TargetEndpoint>default</TargetEndpoint>
      </RouteRule>
    </ProxyEndpoint>
  5. プロキシにポリシーを追加するには、レスポンス PreFlow(フローエディタの下半分)にある [+ Step] ボタンをクリックします。

    Edge の [Add] のダイアログ ボックスに、フローに追加できるポリシーの分類リストが表示されます。

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

    Edge で新しいポリシーがレスポンスの PreFlow に添付されます。

    [Add] をクリックすると、Edge では次のことが行われます。

    • [Navigator] ペインの [Policies] の下に新しいポリシーを追加します。
    • XML to JSON ポリシーを [Flow] ペイン内に追加します。
    • ポリシーの構成 XML を [Code] ペインに表示します。
  8. [Save] をクリックして、変更を含む現在のリビジョンを保存します。

では、試してみましょう。ターミナル ウィンドウで、次の curl コマンドを実行します。

curl https://org_name-test.apigee.net/getstarted

ここで

あるいは、ブラウザで同じ 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 プロキシを再デプロイしてみてください。

HTTP リクエストおよびレスポンス ヘッダーを表示するには、curl-vs オプションを指定して、詳細表示を有効にします(v はレスポンスを詳細表示しますが、s は重要度の低い一部の詳細情報を抑制します)。次に例を示します。

curl -vs https://ahamilton-eval-test.apigee.net/getstarted | python -m json.tool

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

*   Trying 10.20.30.40...
* TCP_NODELAY set
* Connected to ahamilton-eval-test.apigee.net (10.20.30.40) port 443 (#0)
...
> GET /getstarted HTTP/1.1
> Host: ahamilton-eval-test.apigee.net
> 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"
  }
}

次のステップ

さらに深く知る