本記事でやりたいこと
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



