演習内容
このチュートリアルを通じて、以下のことを学びます。
- Edge API プロキシを WSDL ファイルから生成する。
- RESTful SOAP プロキシタイプとパススルー SOAP プロキシの違いを理解する。
このチュートリアルでは、SOAP ベースのウェブサービスの前面に Edge API プロキシを配置する方法を学びます。
具体的には、SOAP ベースのサービスの前面に配置する新しい RESTful API を生成する方法について説明します。ここでは詳しくは説明しませんが、SOAP ペイロードを受け入れてバックエンド サービスに渡すパススルー プロキシを生成することも可能です。
必要なもの
- Apigee Edge アカウント。まだお持ちでない場合は、Apigee Edge アカウントの作成の手順に沿って登録できます。
プロキシを作成する
ここでは、SOAP サービスの前面に配置するプロキシを Edge に生成させます。SOAP API プロキシには次の 2 種類があります。
- REST-SOAP-REST プロキシタイプは、SOAP への変換レイヤを持つ新しい RESTful API を生成します。クライアントからその他の RESTful サービスと同じように呼び出して、バックエンド サービスで必要なクエリ パラメータを渡します。Edge はこれを、サービスで必要な SOAP ペイロードに変換します。
- Pass-through proxy プロキシタイプでは、クライアントから SOAP ペイロードを渡すことができます。この方法では、SOAP サービス呼び出しで Edge 管理機能のメリットを利用できます。
Edge
Edge UI を使用して SOAP サービスをプロキシするには:
- apigee.com/edge にログインします。
- 左側のナビゲーション バーで [Develop] > [API Proxies] を選択します。
- [+Proxy] をクリックします。
- [SOAP service] をクリックします。
- [Proxy details] ページで、次のように入力します。
フィールド 説明 WSDL source [URL] を選択します。
次の WSLD URL をコピーして [Enter URL] フィールドに貼り付けます。
https://ws.cdyne.com/delayedstockquote/delayedstockquote.asmx?wsdl
[Validate] をクリックします。
Apigee Edge により WSDL ファイルが取得されて読み込まれ、SOAP サービスでサポートされているオペレーションのリストが検出されます。
Name delayedstockquote
のままにします。これは、作成する API プロキシの名前です。
Base path /delayedstockquote
のままにします。Description 必要に応じて、「Stock quote WSDL API Proxy」などの説明を追加します。 - [Next] をクリックします。
- [Common policies] ページの [Security: Authorization] で、[Pass through (no authorization)] を選択します。
- [Next] をクリックします。
- [WSDL operations] ページで、[REST to SOAP to REST] を選択します。
プロキシタイプを選択すると、REST API パスを生成するオペレーションのリストが表示されます。このリストを使用して、WSDL で検出されたオペレーションの中から選択できます(特定のセットを探している場合)。このリストには、REST クライアントがバックエンド SOAP サービスを呼び出すために使用できるリソースも表示されます。
ページ上のその他の選択項目はすべてそのままにします。
- [Next] をクリックします。
- [Next] をクリックして、仮想ホストのデフォルトを受け入れます。
- [Summary] ページの [Optional Deployment] で [Test]、[Create and deploy] の順にクリックします。
Edge によって RESTful API プロキシが生成され、
test
環境にデプロイされます。WSDL に基づいてサービスでサポートしているオペレーションや入力パラメータなどが判別され、各オペレーションに使用する HTTP メソッドが提案されます。一般に、これらのオペレーションは Edge によって GET リクエストに変換されます。GET リクエストにはキャッシュ可能であるという利点があります。Edge により、バックエンド ターゲット エンドポイントもセットアップされます。バックエンド ターゲット エンドポイントは SOAP オペレーションごとに異なることがあります。新しい API プロキシをカスタマイズしない限り(このチュートリアルではカスタマイズしません)、以上で作業は完了です。新しい API プロキシのテストに進むことができます。
Classic Edge(Private Cloud)
Classic Edge UI を使用して SOAP サービスをプロキシするには:
http://ms-ip:9000
にログインします。ここで、ms-ip は、Management Server ノードの IP アドレスまたは DNS 名です。- 上部のナビゲーション バーで [APIs] > [API Proxies] を選択します。
- [+ API Proxy] をクリックします。
- [SOAP service] をクリックします。
- [Proxy details] ページで、次のように入力します。
フィールド 説明 WSDL [Example URL] を選択します。
次に、以下を選択します。
delayedstockquote.asmx?WSDL[Validate] をクリックします。
Apigee Edge により WSDL ファイルが取得されて読み込まれ、SOAP サービスでサポートされているオペレーションのリストが検出されます。
Proxy Name 「
delayedstockquote
」と入力します。これは、作成するプロキシの名前です。
[Proxy Base Path] と [Description] そのままにしておきます。 - [Next] をクリックします。
- [WSDL] ページで、次のように選択します。
フィールド 操作 API Proxy Type [REST to SOAP to REST] を選択します。
プロキシタイプを選択すると、Edge によりオペレーションのリストが表示されます。これらのオペレーションに対して REST API のパスが生成されます。このリストを使用して、WSDL で検出されたオペレーションの中から選択できます(特定のセットを探している場合)。このリストには、REST クライアントがバックエンド SOAP サービスを呼び出すために使用できるリソースも表示されます。
ここでは、最初のオペレーション セットが選択されている状態にしておきます。
Port Type: DelayedStockQuoteSoap 3 つの WSDL 操作をすべて選択します。他の設定はそのままにしておきます。
- [Next] をクリックします。
- [Security] ページで [Pass through (none)] を選択します。
- [Next] をクリックします。
- 仮想ホストのデフォルトを受け入れて、[Next] をクリックします。
- [Build] ページでデフォルト値をそのままにして、[Build and Deploy] をクリックします。これにより、プロキシの生成が開始されます。
Edge により、RESTful API プロキシが生成されます。WSDL に基づいてサービスでサポートしているオペレーションや入力パラメータなどが判別され、各オペレーションに使用する HTTP メソッドが提案されます。一般に、これらのオペレーションは Edge によって GET リクエストに変換されます。GET リクエストにはキャッシュ可能であるという利点があります。Edge により、バックエンド ターゲット エンドポイントもセットアップされます。バックエンド ターゲット エンドポイントは SOAP オペレーションごとに異なることがあります。
新しいプロキシをカスタマイズしない限り(このチュートリアルではカスタマイズしません)、以上で作業は完了です。新しいプロキシのテストに進むことができます。
プロキシのテスト
作成したプロキシをテストするには、コマンド プロンプトを開き、cURL を使用します。下のコマンドを入力してください。ただし、
- ORG は、プロキシを作成した Edge 組織の名前です。
- ENV は、プロキシがデプロイされている環境です。
- DOMAIN は、使用している Edge インスタンスに対応します。
curl "https://{ORG}-{ENV}.{DOMAIN}/delayedstockquote/quote?StockSymbol=GOOG&LicenseKey=0"
たとえば、組織が docfood
、環境が test
で、Edge エンタープライズ クラウドを使用している場合は、次のようなコマンドを実行します。
curl "https://docfood-test.apigee.net/delayedstockquote/quote?StockSymbol=GOOG&LicenseKey=0"
StockSymbol クエリ パラメータに「GOOG
」を入力すると、Alphabet Inc. のクラス C 株式の現在の価格が表示されます。例:
{ "GetQuoteResponse":{ "GetQuoteResult":{ "StockSymbol":"GOOG", "LastTradeAmount":819.55, "LastTradeDateTime":"2017-02-13T14:33:00", "StockChange":5.88, "OpenAmount":816.0, "DayHigh":820.96, "DayLow":815.49, "StockVolume":785064, "PrevCls":813.67, "ChangePercent":"+0.72%", "FiftyTwoWeekRange":"663.28 - 841.95", "EarnPerShare":27.88, "PE":29.4, "CompanyName":"Alphabet Inc.", "QuoteError":false } } }
自動生成された OpenAPI 仕様を取得する
「REST to SOAP to REST」を使用して SOAP サービスをプロキシする場合、Edge によって自動的に OpenAPI 仕様が生成されます。この OpenAPI 仕様を使用して、API の API ドキュメントを生成できます。
次の URL にアクセスするだけで、OpenAPI 仕様を取得できます。
curl https://{ORG}-{ENV}.{DOMAIN}/delayedstockquote/openapi.json
追加演習: 使用するリソース、動詞、クエリ パラメータを調べる方法
API 呼び出しのテストでは、バックエンド SOAP サービスに対する cURL 呼び出しで特定のリソースとクエリ パラメータを使用しました。使用するリソースやクエリ パラメータを自分で調べるにはどうすればよいでしょうか。
リソースと動詞
API プロキシ ウィザードでプロキシを作成したときに、SOAP オペレーションと API の動詞およびリソースのマッピングが表示されました。このマッピングをメモしていなかったとしても、プロキシの作成後に以下の方法で調べることができます。
API プロキシの [Develop] タブに移動すると、左側の [Navigator] ペインにある [Proxy Endpoints] の下にフローのリストが表示されます。対象のフローをクリックします。たとえば、[GetQuote] フローをクリックします。[Code] ペインに XML が表示されます。この XML に含まれる <Condition> 要素に、フローのリソースパスと動詞として /quote
と GET
が示されます。
クエリ パラメータ
[GetQuote] フローを選択した状態で、フローのグラフィカル ビュー内の最初のポリシーをクリックします。最初のポリシーは Extract Variables ポリシーとなっているはずです。このポリシーが、渡すべきクエリ パラメータ StockSymbol
および LicenseKey
を取り込みます(ウェブで SOAP サービスを検索すると、LicenseKey として渡すべき値がわかります)。
取得されたクエリ パラメータは変数として保存され、次のポリシーで SOAP メッセージを構成するために使用されます。