i-Cross API関連では5回目の掲載となります。前回のCL/RPG活用編、前々回のSQL活用編では共にIBMiにREST APIを実装するサーバー機能のご紹介でした。今回は逆にREST APIを提供する外部システムをIBMiが活用するクライアント機能設定例としてYahooが提供する郵便番号検索APIを用い解説致します。
動画で解説
約8分の音声付き動画です。
動作概要
IBMiにYahooが提供する郵便番号検索APIをコール可能な設定を行い、①検索したい郵便番号でコールすると②Yahooはjson形式で結果を返します。i-CrossAPIは受信したjson形式のデータを解釈し③IBMiデータベースへ物理ファイルとして自動保存します。自動保存なので事前にカラム定義、テーブルの作成など必要がありません。
URIと必要なパラメーターの確認
YahooサイトへコールするAPIのURIはAPIリファレンスを参照すると「https://map.yahooapis.jp/search/zip/V1/zipCodeSearch」であることが分かります。
このURIコールに必要なパラメーターはAPIリファレンスを参照すると、②検索したい郵便番号のパラメーターquery以外に①Yahooから事前取得が必要なClient ID(アプリケーションID)を指定するパラメータappidと③検索結果がjsonで返ってくるように指定するパラメーターoutputの計3つ必要である事が分かります。
クライアント機能設定手順
外部システムが提供するREST APIをIBMiから簡単にコール出来るように下図のような専用メニューが用意されています。
ですのでYahooへコールするURI「https://map.yahooapis.jp/search/zip/V1/zipCodeSearch」は下図のように「API実行URL」に指定するだけです。
パラメーターも同様に専用画面にキーと値をそれぞれ指定するだけです。下図は郵便番号を指定するパラメーターqueryをキーとし、検索したい郵便番号を103-0016として指定した例です。
YahooへコールするURIとパラメーターの設定が終了するとAPIを実行し定義を保存をします。
クライアント機能の定義設定は以上で終了です。
json形式データを物理ファイルへ自動保存
IBMiが取得するデータは下図のような階層構造になったjson形式のデータです。i-Cross APIはこのようなjson形式データをIBMiデータベースへ物理ファイルとして自動変換し保存をします。
物理ファイルはROOTから始まり、json階層の深さに依存しますが下図の例のようにROOT_00001~連番で保存しています。テキスト部分を参照するとjsonファイルのどの辺が対応しているのか目安になります。
例えばテキストが「ROOT_FEATURE_PROPERTY_STATION」の物理ファイルを参照すると下図のように保存されており
下図のようにjsonのキー名がIBMi物理ファイルのカラム名となり、値がそれぞれ保存されている事が分かります。
json形式のデータとIBMi物理ファイルの対比に関して以前のブログ「国税庁インボイスシステムを使ってみた:i-CrossAPI編」の「jsonデータを自動で物理ファイル化」の参照もお願いいたします。
定義をコマンド実行
上記「クライアント機能設定手順」で作成した定義はAPIBRIDGEコマンドで実行が可能です。例えば定義ファイル名をZIPAPIとした場合を下記に記します。
APIBRIDGE EXEC(*EXEC) KEY(ZIPAPI) QRKEY(query appid output) QRVALUE('103-0016' '取得したあなたのappid' 'json')
まとめ
以上のようにi-Cross APIのクライアント機能は専用画面にURIとパラメーターを設定するだけで、他システムが提供するREST APIの利用し、受け取ったjson形式データを自動でIBMiの物理ファイルとして保存が可能である事を解説致しました。
関連リンク
お問合せ
https://alpcom.co.jp/contact/
アルファー・コミュニケーションズ公式YouTube
https://www.youtube.com/channel/UCTqwZsRRpAs9NPTUz2yH3ow/videos