ターゲット エンドポイントを変更すると、プロキシにポリシーを追加する準備が整います。
ポリシーは、API プロキシを介してメッセージ フロー内のさまざまなポイントに接続できる Edge コンポーネントです。ポリシーは、メッセージの形式の変換、アクセス制御の実施、リモート サービスの呼び出し、ユーザーの認可、潜在的な脅威に関するメッセージ コンテンツの調査など、多くのことを行うことができます。
このチュートリアルでは、XMLtoJSON ポリシーをプロキシに追加します。このポリシーは、XML メッセージのペイロードを JSON に変換します。また、レスポンスの Content-Type
ヘッダーも変更されます。
XML to JSON ポリシーをプロキシに追加するには:
- ブラウザで Edge UI を開き、ログインします。
- メイン ウィンドウで [API Proxies] をクリックし、プロキシを選択します。この例では、ステップ 2: API プロキシを作成するで作成したプロキシを選択します。
[Develop] タブをクリックします。
Edge に API Proxy Editor が表示されます。
[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>
- プロキシにポリシーを追加するには、レスポンス PreFlow(フローエディタの下半分)にある [+ Step] ボタンをクリックします。
Edge の [Add] のダイアログ ボックスに、フローに追加できるポリシーの分類リストが表示されます。
- 下にスクロールして、[Mediation] カテゴリの [XML to JSON] ポリシーを選択します。
デフォルト名のまま、[Add] をクリックします。
Edge で新しいポリシーがレスポンスの PreFlow に添付されます。
[Add] をクリックすると、Edge では次のことが行われます。
- [Navigator] ペインの [Policies] の下に新しいポリシーを追加します。
- XML to JSON ポリシーを [Flow] ペイン内に追加します。
- ポリシーの構成 XML を [Code] ペインに表示します。
- [Save] をクリックして、変更を含む現在のリビジョンを保存します。
では、試してみましょう。ターミナル ウィンドウで、次の curl
コマンドを実行します。
curl https://org_name-test.apigee.net/getstarted
ここで
- org_name は、Apigee アカウントの作成時に Apigee から割り当てられた組織名です。
-test
は環境です。ステップ 2: API プロキシを作成するで、新しいプロキシを「test」環境にデプロイしました。/getstarted
はプロキシのベースパスです。
あるいは、ブラウザで同じ URL を開くこともできます。
次のレスポンスを受け取ります。
{ "root": { "city": "San Jose", "firstName": "John", "lastName": "Doe", "state": "CA" } }
レスポンスの本文が上記のように表示されない場合は、次の点を確認してください。
- ターゲット エンドポイントは、ステップ 4: ターゲット エンドポイントを変更するに記載されているように、「https://mocktarget.apigee.net/xml」である。
- 「Hello, Guest!」というレスポンスを受け取る場合、ターゲット エンドポイントの末尾に「/xml」を追加する必要があります。
- 404 が表示される場合、「apigee.com」ではなく「apigee.net」にアクセスしていることを確認します。
- プロキシの最新リビジョンがデプロイされている。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" } }