SAP OData メタデータを API としてインポートする

この記事では、メタデータの記述を使用して OData サービスをインポートする方法について説明します。 この記事では、SAP ゲートウェイを例として使用します。 ただし、この方法は任意の OData 準拠サービスに適用できます。

この記事では、次のことを行います。

  • OData メタデータを OpenAPI 仕様に変換する
  • OpenAPI 仕様を API Management にインポートする
  • API の構成を完了する
  • Azure Portal での API のテスト

前提条件

  • 既存の API Management インスタンスがある。 まだない場合は、作成してください

  • OData v2 または v4 として公開されている SAP システムとサービス。

  • SAP バックエンドが自己署名証明書 (テスト目的) を使用している場合は、SSL の信頼チェーンの検証を無効にすることが必要になる場合があります。 これを行うには、API Management インスタンスでバックエンドを構成します。

    1. Azure portal の [API] で、[バックエンド]>[+ 追加] を選択します。
    2. SAP バックエンド サービスを指すカスタム URL を追加します。
    3. [Validate certificate chain](証明書チェーンを検証する) および [Validate certificate name](証明書名を検証する) のチェックボックスをオフにします。

    注意

    運用環境のシナリオでは、エンドツーエンドの SSL 検証に適切な証明書を使用します。

OData メタデータを OpenAPI JSON に変換する

  1. SAP サービスからメタデータ XML を取得します。 次のいずれかの方法を使います。

    • SAP ゲートウェイ クライアント (トランザクション /IWFND/GW_CLIENT ) を使用します。
    • または、XML を取得するための次の直接 HTTP 呼び出しを行います。http://<OData server URL>:<port>/<path>/$metadata
  2. OData XML を OpenAPI JSON 形式に変換します。 メタデータ XML に応じて、OData v2 または OData v4 用の OASIS オープンソース ツールを使用します。

    次に、OData v2 XML をテスト サービス epm_ref_apps_prod_man_srv 用に変換するコマンドの例を示します。

    odata-openapi -p --basePath '/sap/opu/odata/sap/epm_ref_apps_prod_man_srv' \
     --scheme https --host <your IP address>:<your SSL port> \
     ./epm_ref_apps_prod_man_srv.xml
    

    注意

    • 単一の XML ファイルを使用したテストを目的として、オープンソース ツールに基づいて Web ベースのコンバーターを使用できます。
    • ツールまたは Web ベースのコンバーターを使用して、SAP OData サーバーの <IP アドレス> : <ポート> を指定できます (省略可能)。 または、生成された OpenAPI 仕様の後半に、またはAPI Management にインポートした後に、この情報を追加します。
  3. API Management にインポートするために、openapi-spec.json ファイルをローカルに保存します。

API Management インスタンスに移動します。

  1. Azure portal で、API Management サービス を検索して選択します。

    Select API Management services

  2. [API Management サービス] ページで、ご自身の API Management インスタンスを選択します。

    Select your API Management instance

バックエンド API のインポートと発行

  1. サイド ナビゲーション メニューの [API] セクションで、 [API] を選択します。

  2. [Create a new definition](新しい定義の作成) で、[OpenAPI の仕様] を選択します。

    OpenAPI specifiction

  3. [ファイルの選択] をクリックし、前の手順でローカルに保存した openapi-spec.json ファイルを選択します。

  4. API 設定を入力します。 値は、作成時に設定することも、後で [設定] タブに移動して構成することもできます。

    • [API URL サフィックス] では、元の SAP サービスと同じ URL パスを使用することをお勧めします。

    • API 設定の詳細については、「最初の API のインポートと発行」のチュートリアルを参照してください。

  5. [作成] を選択します

Note

API インポートの制限事項については、別の記事で説明されています。

API の構成を完了する

インポートした API に、次の 3 つの操作を追加します。

  • GET /$metadata

    Operation 説明 操作の詳細な構成
    GET /$metadata API Management が $metadata エンドポイントに到達できるようにします。これは、OData サーバーとクライアントを統合するために必要です。

    この必須の操作は、生成してインポートした OpenAPI 仕様に含まれていません。
    200 OK 応答を追加します。

    Get metadata operation

  • HEAD /

    Operation 説明 操作の詳細な構成
    HEAD / 必要に応じて、クライアントがクロスサイト リクエスト フォージェリ (CSRF) トークンを SAP サーバーと交換できるようにします。

    SAP では、Get Verb を使用して CSRF トークンの交換を行うこともできます。

    CSRF トークンの交換については、この記事では説明しません。 トークンの交換を仲介する API Management ポリシー スニペットの例を参照してください。
    該当なし

    Operation to fetch tokens

  • GET /

    Operation 説明 操作の詳細な構成
    GET / サービス ルートでのポリシーの構成を有効にします。 次の受信 rewrite-uri ポリシーを構成し、サービス ルートに転送される要求に末尾のスラッシュを追加します。

    <rewrite-uri template="/" copy-unmatched-params="true" />

    このポリシーでは、末尾のスラッシュがある場合とない場合に、一部のバックエンドで異なる方法で処理されるために要求があいまいになる可能性を排除します。

    Get operation for service root

また、環境に適した方法を使用して、バックエンドへの認証を構成します。 例については、API Management の認証ポリシーを参照してください。

API のテスト

  1. API Management インスタンスに移動します。

  2. サイド ナビゲーション メニューの [API] セクションで、 [API] を選択します。

  3. [すべての API] で、インポートした API を選択します。

  4. [テスト] タブを選択して、テスト コンソールにアクセスします。

  5. 操作を選択し、必要な値を入力して、[送信] を選択します。

    たとえば、GET /$metadata 呼び出しをテストして、SAP バックエンドへの接続を確認します。

  6. 応答を表示します。 トラブルシューティングを行うには、呼び出しをトレースします。

  7. テストが完了したら、テスト コンソールを終了します。

実稼働に関する考慮事項

次のステップ