このページは Apigee と Apigee ハイブリッドに適用されます。
Apigee Edge ドキュメントを表示する
前のステップでターゲット エンドポイントを変更し、プロキシにポリシーを追加する準備が整いました。
ポリシーは、API プロキシを介してメッセージ フローのさまざまなポイントに接続できる Apigee コンポーネントです。ポリシーは、メッセージの形式の変換、アクセス制御の適用、リモート サービスの呼び出し、ユーザーの認証、潜在的な脅威についてのメール コンテンツの調査などを行えます。
このチュートリアルでは、XMLtoJSON ポリシーをプロキシに追加します。このポリシーは、XML メッセージのペイロードを JSON に変換します。また、レスポンスの Content-Type
ヘッダーも変更します。
プロキシ内のフローにポリシーを接続できます。フローはポリシーの実行方法を制御します。この例では、ポリシーを PreFlow という特別なフローに追加します。PreFlow のポリシーは、プロキシ内の他のポリシーの前に実行されます。この例を読むためにフローを詳細に理解する必要はありませんが、フローの詳細についてはフローによる API プロキシの制御をご覧ください。
新しいプロキシ エディタ
XMLtoJSON ポリシーをプロキシに追加するには、次の 2 つのステップを実行します。
ポリシーのインスタンスを作成する
ポリシーを使用するには、次に示すように、ポリシー テンプレートからポリシーの新しいインスタンスを作成する必要があります。
Google Cloud コンソールの Apigee UI を使用している場合: [プロキシ開発] > [API プロキシ] を選択します。
従来の Apigee UI を使用している場合: [Develop] > [API Proxies] を選択して、[Proxies] ペインでプロキシの環境を選択します。
- プロキシの一覧から、ポリシーを追加するプロキシを選択します。
[Develop] タブをクリックします。
- 左側のペインで、[ポリシー] フォルダの横にある [+] ボタンをクリックします。
[ポリシーの作成] ダイアログで、[Select policy type] フィールドをクリックし、[Mediation] まで下にスクロールし、[XML to JSON] を選択します。
必要に応じて、ポリシーの [名前] と [表示名] を変更できます。デフォルトでは、Apigee はポリシー名に短い接頭辞(この場合は X2J-)を提供します。接頭辞の後に、ダッシュで区切られた一連の記述的単語を追加できます。命名規則をご覧ください。
完了したら、[Create] をクリックしてポリシーを作成します。
[Develop] ビューの右側のペインに、XMLtoJSON ポリシーが表示されました。
ペインの下半分には、ポリシーの XML コードが表示されます。
ポリシーの詳細を表示するには、ポリシー名の横にある情報アイコン()を選択し、[XML To JSON ポリシー] をクリックします。これでポリシーのリファレンス ページが表示されます。
ポリシー名を変更する
ポリシーの名前を変更するには:
- 左側のペインの [Policies] で、ポリシーを選択します。
- ポリシーの XML コードの <DisplayName> 要素に、ポリシーの説明的フレーズを追加します(ポリシー名の略記の後に change-xml-to-json など)。
これにより、[Policies] の下に表示されるポリシー名が自動的に更新されます。
命名規則をご覧ください。
ポリシーを PreFlow のステップに接続する
XMLtoJSON ポリシーを作成したら、これを PreFlow のステップに接続できます。
- 左側のペインで [Proxy Endpoints] > [default] > [PreFlow] を選択します。
注: すべての要素を表示するため、場合によっては右側のペインでビジュアル エディタを広げる必要があります。これを行うには、ビジュアル エディタとテキスト エディタの間の分割線をクリックして下に少しドラッグします。
- ビジュアル エディタの右下にある [Response] ペインの [PreFlow] の横にある [+] ボタンをクリックします。
- [Add policy step] ダイアログで、X2J-change-xml-to-json ポリシーを選択します。
[Add] をクリックしてポリシーを適用します。
X2J-change-xml-to-json ポリシーが [Response] ペインに表示されます。
- [保存] をクリックし、現在のリビジョンに変更を加えて保存します。
- リビジョンに変更をデプロイするには、[デプロイ] をクリックし、API プロキシをデプロイするの手順を行います。
従来のプロキシ エディタ
XMLtoJSON ポリシーをプロキシに追加する
- ブラウザで Apigee UI を開き、ログインします。
- メイン ウィンドウで [API Proxies] をクリックし、プロキシを選択します。この例では、ステップ 2: API プロキシを作成するで作成したプロキシを選択します。
[Develop] タブをクリックします。
API プロキシ エディタが表示されます。
[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>
- プロキシにポリシーを追加するには、レスポンス PreFlow にある [+ Step] ボタン(フローエディタの下半分)をクリックします。
[Add] ダイアログ ボックスに、フローに追加可能な分類済みのポリシーリストが表示されます。
- 下にスクロールして、[MEDIATION] カテゴリの [XMLtoJSON] ポリシーを選択します。
デフォルト名をそのまま残し、[Add] をクリックします。
Apigee が、新しいポリシーをレスポンスの PreFlow に接続します。
[Add] をクリックすると、次の処理が行われます。
- [Navigator] ペインの [Policies] に新しいポリシーを追加します。
- XMLtoJSON ポリシーを [Flow] ペインに追加します。
- ポリシーの構成 XML を [Code] ペインに表示します。
- [保存] をクリックし、現在のリビジョンに変更を加えて保存します。
- 変更をデプロイするには、[概要] タブをクリックして [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" } }
レスポンスの本文がこのようにならない場合は、次の点を確認してください。
- ステップ 4: ターゲット エンドポイントを変更するで説明されているように、ターゲット エンドポイントは
https://mocktarget.apigee.net/xml
です。- 「
Hello, Guest!
」というレスポンスを受け取る場合、ターゲット エンドポイントの末尾に「/xml
」を追加する必要があります。 404
が返された場合は、apigee.com
ではなくapigee.net
にアクセスしていることを確認してください。
- 「
- プロキシは最新リビジョンがデプロイされます。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" } }