SOAP サービスのプロキシ

演習内容

このチュートリアルを通じて、以下のことを学びます。

  • Edge API プロキシを WSDL ファイルから生成する。
  • RESTful SOAP プロキシタイプとパススルー SOAP プロキシの違いを理解する。

このチュートリアルでは、SOAP ベースのウェブサービスの前面に Edge API プロキシを配置する方法を学びます。

具体的には、SOAP ベースのサービスの前面に配置する新しい RESTful API を生成する方法について説明します。ここでは詳しくは説明しませんが、SOAP ペイロードを受け入れてバックエンド サービスに渡すパススルー プロキシを生成することも可能です。

必要なもの

プロキシを作成する

ここでは、SOAP サービスの前面に配置するプロキシを Edge に生成させます。SOAP API プロキシには次の 2 種類があります。

  • REST-SOAP-REST プロキシタイプは、SOAP への変換レイヤを持つ新しい RESTful API を生成します。クライアントからその他の RESTful サービスと同じように呼び出して、バックエンド サービスで必要なクエリ パラメータを渡します。Edge はこれを、サービスで必要な SOAP ペイロードに変換します。
  • Pass-through proxy プロキシタイプでは、クライアントから SOAP ペイロードを渡すことができます。この方法では、SOAP サービス呼び出しで Edge 管理機能のメリットを利用できます。

Edge

Edge UI を使用して SOAP サービスをプロキシするには:

  1. apigee.com/edge にログインします。
  2. 左側のナビゲーション バーで [Develop] > [API Proxies] を選択します。
  3. [+Proxy] をクリックします。
  4. [SOAP service] をクリックします。
  5. [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」などの説明を追加します。
  6. [Next] をクリックします。
  7. [Common policies] ページの [Security: Authorization] で、[Pass through (no authorization)] を選択します。
  8. [Next] をクリックします。
  9. [WSDL operations] ページで、[REST to SOAP to REST] を選択します。

    プロキシタイプを選択すると、REST API パスを生成するオペレーションのリストが表示されます。このリストを使用して、WSDL で検出されたオペレーションの中から選択できます(特定のセットを探している場合)。このリストには、REST クライアントがバックエンド SOAP サービスを呼び出すために使用できるリソースも表示されます。

    ページ上のその他の選択項目はすべてそのままにします。

  10. [Next] をクリックします。
  11. [Next] をクリックして、仮想ホストのデフォルトを受け入れます。
  12. [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 サービスをプロキシするには:

  1. http://ms-ip:9000 にログインします。ここで、ms-ip は、Management Server ノードの IP アドレスまたは DNS 名です。
  2. 上部のナビゲーション バーで [APIs] > [API Proxies] を選択します。
  3. [+ API Proxy] をクリックします。
  4. [SOAP service] をクリックします。
  5. [Proxy details] ページで、次のように入力します。

    フィールド 説明
    WSDL

    [Example URL] を選択します。

    次に、以下を選択します。
    delayedstockquote.asmx?WSDL

    [Validate] をクリックします。

    Apigee Edge により WSDL ファイルが取得されて読み込まれ、SOAP サービスでサポートされているオペレーションのリストが検出されます。

    Proxy Name

    delayedstockquote」と入力します。

    これは、作成するプロキシの名前です。

    [Proxy Base Path] と [Description] そのままにしておきます。
  6. [Next] をクリックします。
  7. [WSDL] ページで、次のように選択します。
    フィールド 操作
    API Proxy Type

    [REST to SOAP to REST] を選択します。

    プロキシタイプを選択すると、Edge によりオペレーションのリストが表示されます。これらのオペレーションに対して REST API のパスが生成されます。このリストを使用して、WSDL で検出されたオペレーションの中から選択できます(特定のセットを探している場合)。このリストには、REST クライアントがバックエンド SOAP サービスを呼び出すために使用できるリソースも表示されます。

    ここでは、最初のオペレーション セットが選択されている状態にしておきます。

    Port Type: DelayedStockQuoteSoap 3 つの WSDL 操作をすべて選択します。他の設定はそのままにしておきます。

  8. [Next] をクリックします。
  9. [Security] ページで [Pass through (none)] を選択します。
  10. [Next] をクリックします。
  11. 仮想ホストのデフォルトを受け入れて、[Next] をクリックします。
  12. [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> 要素に、フローのリソースパスと動詞として /quoteGET が示されます。

クエリ パラメータ

[GetQuote] フローを選択した状態で、フローのグラフィカル ビュー内の最初のポリシーをクリックします。最初のポリシーは Extract Variables ポリシーとなっているはずです。このポリシーが、渡すべきクエリ パラメータ StockSymbol および LicenseKey を取り込みます(ウェブで SOAP サービスを検索すると、LicenseKey として渡すべき値がわかります)。

取得されたクエリ パラメータは変数として保存され、次のポリシーで SOAP メッセージを構成するために使用されます。