本記事でやりたいこと
Step1.SAP BTP上に作成したDBをOData化して外部から連携できるようにする
Step2.公開したODataをAPIManagementに登録してAPIとして管理する
開発はBTP上で実施するのでバージョンなどは省略
Step1.SAP BTP上に作成したDBをOData化して外部から連携できるようにする
このチュートリアルに沿ってアプリ開発を勧めてください
この記事でやりたいことのためには画面の作成は不要です
Step2.公開したODataをAPIManagementに登録してAPIとして管理する
上記はCloud IntegrationのiFlowを登録する手順ですが同様の手順でAPI Managementに登録します
※S/4HANAと同様の方法でODataを登録する事ができない
Step3.ODataをカスタマイズする
こちらのチュートリアルStep2-9のようにAPI仕様を手書きで書くのはしんどいと思います(私はしんどい)
APIの利用自体はできるけど仕様がわからないのは不便
プロジェクトによってはこういうのをAPI仕様書として利用する場合もあると思うので追加していきます
BTPのBusiness Application Studioに戻ります(VSCとかで開発してる人はそちらへ)
Terminalから以下のコマンドを実行
npm add --save-dev cds-swagger-ui-express
以下のserver.jsファイルを作成
const cds = require ('@sap/cds')
module.exports = cds.server
if (process.env.NODE_ENV !== 'production') {
const cds_swagger = require ('cds-swagger-ui-express')
cds.on ('bootstrap', app => app.use (cds_swagger()) )
}
ローカル実行して動作確認してください
cds build
npm start
metadataからOpne API Previewのリンクが増えていると思います
リンク先を確認するとデータモデルなどを視覚的に確認することができます
Terminalからコマンドを実行するとdocs配下にswaggerの定義ファイルを生成できます
このファイルをローカルにダウンロードしておきます
cds compile srv --service all -o docs --to openapi
APIMのカスタマイズ
API画面右上からEdit in API Designerを開きます
画面上部のボタンからimportを選択し、先程ダウンロードしたファイルをインポートします
インポート前に以下の編集を忘れないでください
一部jsonを抜粋します
{
"openapi": "3.0.2",
"info": {
"title": "Service for namespace CatalogService",
"description": "This service is located at [/catalog/](/catalog/)",
"version": ""
},
"x-sap-api-type": "ODATAV4",
"x-odata-version": "4.0",
"x-sap-shortText": "Service for namespace CatalogService",
"servers": [
{
"url": "/catalog" //ここをデプロイURLまたはAPIManagementのURLに変更
}
],
APIManagementからAPI仕様が確認できるようになりました
参考URL
cds-swagger-ui-express
Add the Consumption of an External Service to Your CAP Application
SAP Cloud Application Programming Model(CAP)
Welcome to CAP The Cloud Application Programming Model