SOAP サービスのプロキシ

演習内容

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

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

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

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

必要なもの

  • Apigee Edge アカウント。アカウントがまだない場合は、Apigee Edge アカウントの作成で説明している手順に従ってアカウントを登録できます。

プロキシを作成する

ここでは、SOAP サービスの前面に配置するプロキシを Edge に生成させます。

RESTful API か SOAP パススルーか

REST-SOAP-REST プロキシタイプを使用する場合、SOAP への変換層を備えた新しい RESTful API が生成されます。他の RESTful サービスの場合と同じく、クライアントはこの API を呼び出す際に、バックエンド サービスで必要となるクエリ パラメータを渡します。Edge はこれを、サービスで必要な SOAP ペイロードに変換します。

これとは対照的に、パススルー プロキシを使用する場合は、クライアントが SOAP ペイロードをそのまま渡します。この方法では、SOAP サービス呼び出しで Edge 管理機能のメリットを利用できます。

  1. プロキシを作成する組織の Edge 管理 UI に移動します。Edge クラウドの場合、https://enterprise.apigee.com にアクセスしてログインし、プロキシを作成する組織を選択します。
  2. メインメニューで [APIs] > [API Proxies] をクリックし、[+ API Proxy] ボタンをクリックします。
  3. [Build a Proxy] ウィザードで、[SOAP service] を選択します。
  4. [Next] をクリックします。
  5. [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 により操作のリストが表示されます。Edge はこのリストに示されている操作に対して REST API のパスを生成します。このリストを使用して、WSDL で検出された操作の中から特定の操作を選択できます(特定の操作セットを探している場合)。このリストには、REST クライアントがバックエンド SOAP サービスを呼び出すために使用できるリソースも表示されます。

    ここでは、最初の操作セットが選択されている状態にしておきます。

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

  8. [Next] をクリックします。
  9. [Security] ページで、[Pass through (none)] を選択します。
  10. [Next] をクリックします。
  11. [Virtual Host] のデフォルト値を受け入れ、[Next] をクリックします。
  12. [Build] ページで、デフォルトを受け入れ、[Build and Deploy] をクリックして Edge にプロキシの生成を開始させます。

    Edge により、RESTful API プロキシが生成されます。Edge は 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 メッセージを構成するために使用されます。