API プロキシとしての SOAP サービスの公開

このトピックでは、SOAP ベースのウェブサービス用の API プロキシを作成する方法について説明します。Edge では 2 種類の SOAP プロキシを作成できます。一方はバックエンドの SOAP サービスへの RESTful インターフェースを生成し、他方はバックエンドへの SOAP メッセージの「パススルー」を行います。このトピックでは両方の方法について説明します。

この動画では、API プロキシ ウィザードを使用して Apigee Edge による REST サービスで SOAP サービスを調整する詳細なデモをご覧いただけます。ただし、SOAP-to-REST の変換を詳細に制御する場合は、ポリシーを使用してプロキシを構築します。詳しくは、このコミュニティ投稿をご覧ください。

SOAP ベースのサービスへの RESTful API プロキシの作成

このセクションでは、[Build a Proxy] ウィザードの [REST to SOAP to REST] オプションを使用して RESTful SOAP API プロキシを作成する方法について説明します。

概要

[REST to SOAP to REST] オプションでは、WSDL を処理して RESTful API プロキシを生成します。Edge は、サービスでサポートされているオペレーションや入力パラメータなどを WSDL から判断します。Edge は各オペレーションでどの HTTP メソッドが使用されるかを推測します。GET リクエストにはキャッシュ可能であるという利点があるため、Edge は通常、オペレーションを GET リクエストに変換します。Edge はバックエンド ターゲット エンドポイントもセットアップします。バックエンド ターゲット エンドポイントは SOAP オペレーションごとに異なることがあります。

このタイプのプロキシの場合、Edge は OpenAPI 仕様を自動生成し、ユーザーはそれを使用して API ドキュメントを作成できます。

基本的なステップ

  1. ダッシュボードで [+ API Proxy] をクリックします。
  2. [Build a Proxy] ウィザードで SOAP サービスを選択します。
  3. [Next] をクリックします。
  4. [Details] ページで以下の選択を行います。WSDL を選択した後に [Validate] を選択する必要があります。
    項目 操作内容
    WSDL

    WSDL のソースを選択します。

    • URL: 使用する WSDL の URL を入力します。
    • File: ユーザーのファイル システムにある WSDL ファイルを選択します。追加の依存ファイルがある場合はそれらをすべて選択できます。
    • Example URL: 一般公開ウェブサービス用の WSDL のリストから選択します。これらは Edge の SOAP/API プロキシ機能を試すのに便利です。
    Proxy Name

    作成するプロキシの名前です。

    Proxy Base Path

    Proxy Base Path は、この API プロキシによって公開されている API を一意に識別する URI フラグメントです。API サービスでは、この Base Path URI を使用して、受信リクエスト メッセージを照合し、適切な API プロキシにルーティングします(Base Path は、API プロキシのデプロイ先である組織名と環境に基づいて自動的に生成される API のドメインの末尾に追加されます)。プロジェクト名にバージョン番号を入れることをおすすめします(例: /v1/delayedstockquote)。これにより、コンシューマ アプリがこの API を呼び出す方法が決まります。

    : プロキシ ベースパスのデフォルトは、[Proxy Base Path] 項目で明示的に編集しない限り、[Proxy Name] に対して指定された値がすべて小文字に変換された値です。

    Description プロキシの簡単な説明。
  5. [Next] をクリックします。
  6. [WSDL] ページで、API プロキシのタイプとして [REST to SOAP to REST] を選択します。

注: Edge が WSDL ファイル内で検出したオペレーションの一覧表が表示されます。ユーザーは API プロキシに組み込むオペレーションを選択して構成できます。その表の例を次の図に示します。


  1. [Port Type] 列で、使用するオペレーションの組み合わせを選択します。WSDL では、ウェブサービスで呼び出すことができるオペレーションがポートタイプ要素で定義されています。
  2. 必要に応じて、オペレーションに関連付けられている [HTTP Method] を変更します。

    注: Edge は、各オペレーションで使用するのに最適な HTTP メソッドを推測します。GET リクエストはキャッシュ可能であるため、通常は GET が優先されます。
  3. 必要に応じて、オペレーションに対する REST API パスを変更します。このパスは API プロキシ URL でリソース名として使用されます。
  4. ウィザードの残りの部分をクリックして、セキュリティを追加し、仮想ホストを選択し、デプロイ環境を選択します。
  5. [Build] ページで [Build and Deploy] をクリックします。Edge は、WSDL に基づいて新しい API プロキシを生成してデプロイします。
  6. 新しい API プロキシの概要ページに移動します。WSDL ファイルで検出されたオペレーションに基づいて、一連のリソースが構築されていることがわかります。

    プロキシの [Overview] ページの [Resources] リストに、新しい API、そのオペレーション、パラメータの詳細な説明が表示されています。この表現は API のリファレンス ドキュメントと見なすことができます。Edge は API モデルのこのビューを自動的に生成します。リソースを展開すると、その説明とパス情報を確認できます。

最終的なプロキシについて

Edge が WSDL に基づいて生成した API プロキシは、実際には、データの変換、変数の抽出と設定、メッセージの操作などを行うためのポリシーが含まれている複雑なフローです。WSDL に基づいてプロキシを生成した後に、API 管理 UI の [Develop] ビューでフローを確認すると、実際にどのポリシーが追加されているかを確認できます。

たとえば、リクエスト側では、AssignMessage ポリシーを使用してターゲット URL が設定されています。レスポンス側では、ポリシーによって、レスポンスが XML から JSON に変換され、レスポンスの SOAP ボディー部分が変数に抽出され、レスポンス メッセージが設定されています。プロキシを作成すると、これらのポリシー(および他のポリシー)が自動的に追加されます。

OpenAPI 仕様: このプロキシの自動生成された OpenAPI 仕様を表示するには、http(s)://[proxy_domain]/[proxy_base_path]/openapi.json にアクセスします。ただし、XML スキーマの一部のルールは OpenAPI 仕様で表現できないため、正確には変換されないことがあります。

SOAP ベースのサービスへのパススルー プロキシの作成

このセクションでは、[Create New Proxy] ダイアログの [Pass-Through Proxy] オプションを使用してパススルー プロキシを作成する方法について説明します。

概要

[Pass-Through Proxy] オプションを使用すると、リクエストに含まれている SOAP メッセージをそのままバックエンド サービスに渡すプロキシを作成できるため、SOAP ベースのウェブサービス用のプロキシを作成するのが非常に容易になります。その裏で、Edge が変換やその他のフロー アクティビティをすべて自動で処理します。たとえば、リクエストが JSON 形式だった場合、Edge は適切な名前空間を使用して有効な XML SOAP メッセージに変換してからサービスに POST します。同様に、サービスが XML ベースの SOAP レスポンスを返した場合、Edge はそれを JSON に変換してからクライアントに返します。さらに、Edge は、SOAP オペレーションごとに異なる可能性があるバックエンド ターゲット エンドポイントをセットアップします。

このタイプのプロキシの場合、Edge は WSDL をホストし、ユーザーがアクセスできるようにプロキシ内のフローを作成します。この Edge がホストする WSDL のアドレス http(s)://[proxy_domain]/[proxy_base_path]?wsdl が、このプロキシを介して SOAP サービスを呼び出すクライアント用の新しいサービス エンドポイント URL になります。

基本的なステップ

  1. ダッシュボードで [+ API Proxy] をクリックします。
  2. [Build a Proxy] ウィザードで SOAP サービスを選択します。
  3. [Next] をクリックします。
  4. [Details] ページで以下の選択を行います。WSDL を選択した後に [Validate] を選択する必要があります。
項目 操作内容
WSDL

WSDL のソースを選択します。

  • URL: 使用する WSDL の URL を入力します。
  • File: ユーザーのファイル システムにある WSDL ファイルを選択します。追加の依存ファイルがある場合はそれらをすべて選択できます。
  • Example URL: 一般公開ウェブサービス用の WSDL のリストから選択します。これらは Edge の SOAP/API プロキシ機能を試すのに便利です。
Proxy Name

作成するプロキシの名前です。

Proxy Base Path Proxy Base Path は、この API プロキシによって公開されている API を一意に識別する URI フラグメントです。API サービスでは、この Base Path URI を使用して、受信リクエスト メッセージを照合し、適切な API プロキシにルーティングします(Base Path は、API プロキシのデプロイ先である組織名と環境に基づいて自動的に生成される API のドメインの末尾に追加されます)。プロジェクト名にバージョン番号を入れることをおすすめします(例: /v1/delayedstockquote)。これにより、コンシューマ アプリがこの API を呼び出す方法が決まります。

: プロキシ ベースパスのデフォルトは、[Proxy Base Path] 項目で明示的に編集しない限り、[Proxy Name] に対して指定された値がすべて小文字に変換された値です。

Description プロキシの簡単な説明。

  1. [Next] をクリックします。
  2. [WSDL] ページで、API プロキシのタイプとして [Pass-Through SOAP] を選択します。

    注: 各 WSDL オペレーションとそれに対応する SOAP ペイロードの一覧表が表示されます。これは、バックエンドの SOAP サービスにパススルーされるペイロードです。


  3. [Port Type] 列で、使用するオペレーションの組み合わせを選択します。WSDL では、ウェブサービスで呼び出すことができるオペレーションがポートタイプ要素で定義されています。
  4. ウィザードの残りの部分をクリックして、セキュリティを追加し、仮想ホストを選択し、デプロイ環境を選択します。
  5. [Build] ページで [Build and Deploy] をクリックします。Edge は、WSDL に基づいて新しい API プロキシを生成してデプロイします。

プロキシの [Overview] ページの [Resources] リストに、新しい「パススルー」API の詳細な説明が表示されています。この表現は API のリファレンス ドキュメントと見なすことができます。Edge は API モデルのこのビューを自動的に生成します。リソースを展開すると、その説明とパス情報を確認できます。パススルー プロキシで使用されるメソッドは POST であることがわかります。SOAP プロトコルでサポートされているメソッドは POST だけです。

最終的なプロキシについて

Edge が WSDL に基づいて生成したパススルー プロキシは、実際には、データの変換、変数の抽出と設定、メッセージの操作などを行うためのポリシーが含まれている複雑なフローです。パススルー プロキシを生成した後に、API 管理 UI の [Develop] ビューでフローを確認すると、実際にどのポリシーが追加されているかを確認できます。

たとえば、次の図はパススルー プロキシの Target Endpoint Preflow 部分です。リクエスト側では、AssignMessage ポリシーを使用してターゲット URL が設定されています。レスポンス側では、ポリシーによって、レスポンスが XML から JSON に変換され、レスポンスの SOAP ボディー部分が変数に抽出され、レスポンス メッセージが設定されています。プロキシを作成すると、これらのポリシー(および他のポリシー)が自動的に追加されます。

Edge-hosted WSDL: このタイプのプロキシ用に生成された、Edge がホストする WSDL を確認するには、http(s)://[proxy_domain]/[proxy_base_path]?wsdl に移動します。

高度な SOAP-to-REST プロキシの開発

前のセクションでは、Edge で API プロキシ ウィザードを使用した SOAP-to-REST API プロキシの作成について説明しました。ただし、SOAP-to-REST の変換に対してよりきめ細かい制御が必要な場合は、ウィザードで提供される自動化をバイパスし、必要とする動作のためのポリシーを手動で追加および構成することによってプロキシを構築できます。詳しくは、このコミュニティ投稿をご覧ください。