ブログ

IBMiにREST APIを実装i-Cross APIのご紹介:SQL活用編

前回は概要編でした。今回は具体的にIBMiにREST API作成をします。i-CrossAPIを用いたREST API作成には大きく2通りあります。1つ目は今回のSQLを用いる場合。2つ目が次回掲載予定のCL/RPGプログラムを用いる場合です。SQLは照会系、CL/RPGは追加、更新、削除を行うREST API作成とも考えられます。

外部アプリから要求を受け取るURI(例えばhttp://api.xxx.com/xxxのような文字列)であるエンドポイントと、IBMiで実際に動くREST APIの実態(下図①SQLでデータベースを検索、②CL/RPGプログラムを利用)をどのように紐づけるのかがi-CrossAPIでのREST API作成の実際です。

動作概要

SQLを活用したREST API作成例として「顧客DBから指定した年齢以上の顧客情報を返す」例を作成します。REST APIコール可能な①外部アプリが今回作成するREST APIを用い、外部アプリが参照したい年齢をURI(http://api.xxx.com/xxx・・・のような文字列)をコールすると②IBMiに作成したSQLが起動し顧客DB(CUSTOMER)を検索し③結果を受け取ります。④受け取った検索結果をi-Cross APIは自動でjson化し⑤コール先の外部アプリに結果を返します。

SQLを用いたREST APIの設定手順

外部アプリが指定するURI(http://api.xxx.com/xxx・・・のような文字列)をIBMiにiCrossAPIで設定するため、下図のように①API一覧から任意の名前で②APIパスを命名します。今回は②のように年齢を意味する「age」と言う名前のパスを設定し、実際の年齢を受け渡しするパラメータとして「{age}」を設定しました。今回IBMiは外部アプリから参照されデータ提供するのでHTTPメソッドでは③GETを用いました。

これら設定は外部アプリがIBMiへリクエストの入口であるURI≒エンドポイントを設定しているだけですので、このエンドポイントが外部アプリからコールされた時、IBMi内でリクエストを満足させる実際の動作が必要です。i-Cross APIではこのIBMi内で動作する実態を④スキーマと呼んでおり、④スキーマ横の「+」記号をクリックしREST APIの実態をIBMiに作成し、年齢を受け渡しするパラメータ「{age}」と紐づけをします。

上図④スキーマ横の「+」記号をクリックすると下図「スキーマの作成」画面が表示されます。「①データソース」としてREST APIを作成したいIBMiを指定し「②スキーマの種類」(REST APIの実態)からSQL、SQL(GUI)、CL/RPGから今回はマウス操作でSQLの自動生成が可能な「SQL(GUI)」を選択しました。「③スキーマ名称」は何でも良いのですが、今回年齢を受け渡しする上図②パラメータ「{age}」と紐づけするので同じ名前ageとしました。

上図「OK」ボタンをクリックすると、下図のようなSQLを作成する「①テーブル選択」から今回使用したいテーブルを格納しているライブラリを選択します。するとGUIでSQLを生成するウイザード画面が表示されるので、今回使用したいテーブル②CUTOMERをドラッグ&ドロップで選択しています。

今回はライブラリーYASLIBに存在するCUSTOMERテーブル1つだけですが、複数テーブルを選択し、関連するキーカラムで連結する事が可能です。

次に前述で作成したパラメータ{age}から年齢を受けとりSQLで検索照会する設定をしたいため「③検索条件」タブをクリックします。

上図「③検索条件」タブをクリックすると、下図のように個々のカラムに対して=、<>、<、>、<=・・・・といった条件の指定が可能です。今回、年齢で検索したいので①「D 年齢」を選択し、この年齢以上の条件としたいので②「>=」を選択しています。比較するデータは上記で設定したパラメータageなので③パラメータにチエックを入れると④のようなSQLが自動生成されますので⑤で保存をします。

次に下図のように「①APIパス」「/age/{age}」が呼ばれると実際に動く「②スキーマ」ageがGETメソッドに紐づくように③付近へドラッグ&ドロップします。

ドロップされたスキーマageを下図のように①展開し、スキーマで実際に検索条件になる顧客DB(YASLIB/CUSTOMER)の年齢カラムである「D」と紐づけるため②パラメータの種類は「パス」、③APIパラメータは「age」を選択し④保存をします。

Swaggerで試用

作成したREST APIの動作確認をi-Cross APIで利用可能なSwaggerで確認可能です。Swaggerは①API一覧から②の三点メニューの③Swaggerから利用します。

下図のように表示されたAPIを①展開し「②Try it out」をクリックすると検索条件の年齢パラメータである「③age」が入力可能になるので、例えば60と入力し「④Execute」で実行します。

下図のように正常終了を示す「①Code」200番と照会内容である「②Resposce Body」が表示されます。「③Curl」コマンドと「④Request URL」も示してくれます。

外部アプリの代わりにブラウザで動作確認

今回作成したAPIはGETメソッドですので、REST APIをコールする外部アプリの代わりにブラウザで動作確認が可能です。上図「④Request URL」をコピーして下図のように①ブラウザのURLにペーストしてエンターキーを押すと②IBMiから60歳以上の顧客データをjson形式で取得できる事が確認できます。

まとめ

以上のようにi-Cross APIは既存データベースを活用し、REST API作成が可能である事を解説致しました。

  • IBMiにURI(エンドポイント)を作成し、マウス操作だけで検索SQLを生成
  • URIから受け取ったパラメータをSQL検索パラメータに紐づけ
  • 検索結果を自動的にjson形式に変換し外部アプリへ返信

動画で解説

音声付約9分のビデオです

関連リンク

お問合せ
https://alpcom.co.jp/contact/

アルファー・コミュニケーションズ公式YouTube
https://www.youtube.com/channel/UCTqwZsRRpAs9NPTUz2yH3ow/videos

データ活用支援サービス
https://alpcom.co.jp/products/data_utilization/

pagetop