はじめに
ODataを呼び出す機能を作成するにあたって、製品・ツール等の制約によりOpenAPIファイルが必要になることがありますが、プロバイダーからOpenAPIファイルを取得できるとは限りません。
後述のやり方で簡易にOpenAPIファイルを作成することができたので紹介します。
変換手順
1. OData Common Schema Definition Language (CSDL)の取得
ODataの仕様では、GETリクエストを/$metadataに送信することでCSDLファイルを取得することができます。(参考)
まずは対象のODataにアクセスしCSDLファイルを取得します。以下、例。
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" xmlns="http://docs.oasis-open.org/odata/ns/edm">
<edmx:Reference Uri="/xxx/yyy">
:
</edmx:Edmx>
2.変換ツールの導入
以下のリンク先のツールを利用して変換を行います。
https://github.com/oasis-tcs/odata-openapi
Readmeを参照しツールをInstallします。
2024/11/09時点ではnpmコマンドを利用して導入します。
npm install -g odata-openapi
3.CSDLファイルをOpenAPIファイルに変換
以下のコマンドを実行し、CSDLファイルをOpenAPIファイルに変換します。
odata-openapi3 <CSDLファイル名>
<CSDLファイル名>.openapi3.json
例えば、"CSDL_sample.xml"を変換すると"CSDL_sample.openapi3.json"という名称のOpenAPIファイルが作成されます。
4.補足
変換ツールの旧バージョンでは、上述のコマンドではOData Version2のCSDLを変換できない事象が発生しました。(2024/11/09時点のバージョンでは変換できる)
その時は本ツールの別コマンド"odata-openapi"を利用することで変換することができましたので補足情報として記載します。
コマンド"odata-openapi"を利用したい場合、以下のReadmeに従って導入・実行ください。
https://github.com/oasis-tcs/odata-openapi/blob/main/tools/README.md