ステップ 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"
      }
    }

次のステップ

さらに詳しく