ノンストップデータベース HiRDB からノーコードでREST ful API を自動生成:CData API Server

by 杉本和也 | 2023年08月03日

こんにちは。CData Software Japan リードエンジニアの杉本です。

今回のBlog 記事ではCData API Serve を使って、国産RDBのHiRDB からREST ful API を生成する方法を紹介したいと思います。

HiRDB とは

HiRDB は株式会社日立製作所が提供する国産のノンストップデータベースです。

https://www.hitachi.co.jp/Prod/comp/soft1/hirdb/index.html

今回はこのHiRDB とCData が提供するWeb API の自動生成ツール、「CData API Server」を組み合わせてREST ful API を生成し、外部サービスからのHiRDB のデータにアクセスをしやすくしてみます。

https://www.cdata.com/jp/apiserver/

対象となるHiRDBのバージョン・テーブル

今回は以下のページからダウンロードできるHiRDB 体験版「HiRDB/Single Server Version 10」を利用しました。

https://www.hitachi.co.jp/Prod/comp/soft1/hirdb/trial/index.html


予めサンプルデータとして備わっている「GOODS」テーブルを対象としてAPI を自動生成してみたいと思います。

最終的にこのテーブルから以下のようなGET/POST/PUT/DELETE が実施可能なREST ful API を生成し、HTTPアクセスを可能にします。

API Server のセットアップ

まずAPI Server のセットアップを進めましょう。以下のページから無償トライアルを入手します。

なお今回はHiRDBから提供されているJDBC Driver を利用するため、「Cross-Platform(Java)」版を利用しました。

https://www.cdata.com/jp/apiserver/

Cross-Platform版はダウンロードすると以下のようなjarの実行ファイルが入手できます。これを実行することでAPI Server を立ち上げることができます。


HiRDB JDBC Driver の配置

次にHiRDB のJDBC Driver をAPI Server が読み込めるように設定します。

HiRDB Version 10の試用版では「C:\Program Files\HiRDB_TR\RT\utl」のフォルダにJDBC Driver が格納されています。

今回はJDBC Driver Version 4を利用したので「pdjdbc4.jar」をCDataAPIServerフォルダにある「lib」に配置しました。

API Server の起動

それではAPI Server を使ってAPI 生成を試していきましょう。

「java -jar apiserver.jar」コマンドでAPI Server を起動します。

https://cdn.cdata.com/help/BWH/jp/odata/Java-Edition.html

起動が完了したら「http://localhost:8080」で管理画面にアクセスし、デフォルトのID・PWでログインしましょう。

以下のようにログインできればOKです。情報タブでトライアルを有効化できるので、予め実施しておきましょう。

HiRDB への接続を追加

API Server を立ち上げたら、まずはHiRDB への接続を追加します。

「設定」→「接続」に移動し「+接続を追加」をクリックし

データソースの一覧から「その他」をクリックします。

「その他」ではカスタムのJDBC Driver を使ってコネクションが構成できます。

任意の接続名とともに、ドライバークラス「JP.co.Hitachi.soft.HiRDB.JDBC.HiRDBDriver」を指定します。

接続情報は「フォーマット設定:接続文字列」を指定し、HiRDB JDBC Driver で利用するJDBC URL「例:jdbc:hitachi:hirdb://DBID=22200,DBHOST=localhost,USER=USER1,PASSWORD=USER1」を入力します。

JDBC URLの詳しい情報は以下のページを参照してみてください。

https://itpfdoc.hitachi.co.jp/manuals/3020/3020635643/W3560493.HTM

入力後、接続テストをクリックして「接続に成功しました。」というメッセージが表示されればOKです。

変更を保存しておきましょう。

リソースの追加

続いてどのテーブルをAPI化するのか? という設定である「リソース」を構成します。

「設定」→「リソース」から「リソースを追加」をクリックします。

最初に先程構成したHiRDB の接続情報を選択します。

次に、HiRDB のテーブル一覧からAPI化するテーブルを指定します。

最後にAPIの仕様、どのメソッドを許可するのか? どのカラムまでを公開するのか? を指定します。

今回は全ての機能を有効化して保存しました。これだけでAPI 生成が完了します。

ユーザーの追加

最後にAPI アクセスを行うユーザーを登録しておきましょう。「設定」→「ユーザー」の画面から追加できます。

ユーザーを追加したあと、「認証トークン」が発行されるので、保存しておきましょう。

API アクセスを試してみる

実際に生成されたAPI にアクセスを試してみましょう。

生成されたAPIは自動的にAPI リファレンスも公開されます。

「API」→「/api.rsc/USER1_GOODS」に移動するとこで、API仕様が確認できます。

試しにURLをクリックしてみると、以下のようにGETリクエストが実施され、JSON フォーマットでデータを取得していることが確認できます。

せっかくなのでAPIコラボレーション・開発ツールであるPostman からも試してみましょう。

「GET http://localhost:8080/api.rsc/USER1_GOODS/」でリクエストを作成します。

認証はBasic 認証が利用できるので「Auth」タブから「Basic Auth」を選択し、先程作成したユーザーのID・認証トークンを指定します。

これでリクエストを行うことで、API経由でHiRDB のデータを取得できることが確認できます。

API Server はGET だけでなく、POST やPUT 、DELETE メソッドを使ってテーブルのデータを操作することも可能です。

例えば以下のようにデータの追加をPOSTリクエストで行うことができます。

POST /api.rsc/USER1_GOODS/ HTTP/1.1
Host: localhost:8080
Authorization: Basic YWRtaW46dUZpZVZIOXVMYlV5UjJWbG1QVEo=
Content-Type: application/json
{
    "GOODSCD": "CB9999",
    "GOODSNAME": "CData                  ",
    "PRICE": 12345,
    "SUPPLIERCD": "DE010"
}

PUT やDELETE を使う場合は、予めリソースのコード設定でkey を有効化しておきましょう。

これで以下のようにデータ更新のPUT リクエストが発行できます。

PUT /api.rsc/USER1_GOODS('CB0000') HTTP/1.1
Host: localhost:8080
Authorization: Basic YWRtaW46dUZpZVZIOXVMYlV5UjJWbG1QVEo=
Content-Type: application/json

{
    "GOODSNAME": "CData UPDATE                 "
}

DELETE リクエストを行ってレコードを削除することも可能です。

DELETE /api.rsc/USER1_GOODS('CB0000') HTTP/1.1
Host: localhost:8080
Authorization: Basic YWRtaW46dUZpZVZIOXVMYlV5UjJWbG1QVEo=

実際にHiRDB SQL Executer を使って確認してみると、対象のレコードが正常に削除されていました。

おわりに

このようにAPI Server を利用することで、HiRDB から簡単にREST ful API が生成できます。

今回はPostman からの利用を例としましたが、これにより様々なサービスとの連携を柔軟に実現できるようになるでしょう。

是非トライアルと合わせてお試しください。

ご不明な点があれば、お気軽にテクニカルサポートまでお問い合わせください。

https://www.cdata.com/jp/support/submit.aspx

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。