こんにちは。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
関連コンテンツ