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 インスタンスでバックエンドを構成します。
- Azure portal の [API] で、[バックエンド]>[+ 追加] を選択します。
- SAP バックエンド サービスを指すカスタム URL を追加します。
- [Validate certificate chain](証明書チェーンを検証する) および [Validate certificate name](証明書名を検証する) のチェックボックスをオフにします。
注意
運用環境のシナリオでは、エンドツーエンドの SSL 検証に適切な証明書を使用します。
OData メタデータを OpenAPI JSON に変換する
SAP サービスからメタデータ XML を取得します。 次のいずれかの方法を使います。
- SAP ゲートウェイ クライアント (トランザクション
/IWFND/GW_CLIENT
) を使用します。 - または、XML を取得するための次の直接 HTTP 呼び出しを行います。
http://<OData server URL>:<port>/<path>/$metadata
- SAP ゲートウェイ クライアント (トランザクション
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 にインポートした後に、この情報を追加します。
API Management にインポートするために、
openapi-spec.json
ファイルをローカルに保存します。
API Management インスタンスに移動します。
Azure portal で、API Management サービス を検索して選択します。
[API Management サービス] ページで、ご自身の API Management インスタンスを選択します。
バックエンド API のインポートと発行
サイド ナビゲーション メニューの [API] セクションで、 [API] を選択します。
[Create a new definition](新しい定義の作成) で、[OpenAPI の仕様] を選択します。
[ファイルの選択] をクリックし、前の手順でローカルに保存した
openapi-spec.json
ファイルを選択します。API 設定を入力します。 値は、作成時に設定することも、後で [設定] タブに移動して構成することもできます。
[API URL サフィックス] では、元の SAP サービスと同じ URL パスを使用することをお勧めします。
API 設定の詳細については、「最初の API のインポートと発行」のチュートリアルを参照してください。
[作成] を選択します
Note
API インポートの制限事項については、別の記事で説明されています。
API の構成を完了する
インポートした API に、次の 3 つの操作を追加します。
GET /$metadata
Operation 説明 操作の詳細な構成 GET /$metadata
API Management が $metadata
エンドポイントに到達できるようにします。これは、OData サーバーとクライアントを統合するために必要です。
この必須の操作は、生成してインポートした OpenAPI 仕様に含まれていません。200 OK
応答を追加します。HEAD /
Operation 説明 操作の詳細な構成 HEAD /
必要に応じて、クライアントがクロスサイト リクエスト フォージェリ (CSRF) トークンを SAP サーバーと交換できるようにします。
SAP では、Get Verb を使用して CSRF トークンの交換を行うこともできます。
CSRF トークンの交換については、この記事では説明しません。 トークンの交換を仲介する API Management ポリシー スニペットの例を参照してください。該当なし GET /
Operation 説明 操作の詳細な構成 GET /
サービス ルートでのポリシーの構成を有効にします。 次の受信 rewrite-uri ポリシーを構成し、サービス ルートに転送される要求に末尾のスラッシュを追加します。
<rewrite-uri template="/" copy-unmatched-params="true" />
このポリシーでは、末尾のスラッシュがある場合とない場合に、一部のバックエンドで異なる方法で処理されるために要求があいまいになる可能性を排除します。
また、環境に適した方法を使用して、バックエンドへの認証を構成します。 例については、API Management の認証ポリシーを参照してください。
API のテスト
API Management インスタンスに移動します。
サイド ナビゲーション メニューの [API] セクションで、 [API] を選択します。
[すべての API] で、インポートした API を選択します。
[テスト] タブを選択して、テスト コンソールにアクセスします。
操作を選択し、必要な値を入力して、[送信] を選択します。
たとえば、
GET /$metadata
呼び出しをテストして、SAP バックエンドへの接続を確認します。応答を表示します。 トラブルシューティングを行うには、呼び出しをトレースします。
テストが完了したら、テスト コンソールを終了します。
実稼働に関する考慮事項
- API Management を SAP ゲートウェイと統合するには、エンドツーエンドのシナリオの例を参照してください。
- API Management ポリシーを使用して SAP バックエンドへのアクセスを制御します。 SAP プリンシパルの伝達とX-CSRF トークンの取り込みのためのポリシー スニペットを参照してください。
- 大規模な API のデプロイ、管理、移行のガイダンスについては、以下を参照してください。
関連トピック
- API のインポートの制限事項
- OpenAPI 仕様のインポート
- SOAP API のインポート
- SOAP API のインポートと REST への変換
- App Service API をインポートする
- コンテナー アプリ API をインポートする
- Websocket API のインポート
- GraphQL API のインポート
- GraphQL スキーマをインポートし、フィールド リゾルバーを設定する
- Azure 関数アプリをインポートする
- Azure ロジック アプリをインポートする
- Service Fabric サービスをインポートする
- SAP OData メタデータをインポートする
- API の編集