MENU

IBM iのOS機能を利用してAPIを作成する ~統合Webサービス・サーバーの概要と操作方法 <PART1> |IBM iユーザーに捧げるAPI入門❷

 

Text=澤田 英寿 日本アイ・ビー・エム株式会社

統合Webサービス・サーバーの特徴

IBM iの統合Webサービス・サーバー(Integrated Web Service。以下、IWS)は、ILEアプリケーション(RPGやCOBOLなど)をSOAPやREST標準を使用したWebサービス(API)として外部公開するための機能である。既存のRPG/COBOL資産を活かしてWebサービスを開発できる。つまりこれまでの知識を活かして、短期間で開発でき、IBM iのOS標準機能として提供されているので経済的である。

IWSには以下のように、「ILE 用の統合 Web サービス・クライアント」と「統合 Web サービス・サーバー」という2つの構成要素がある。

ILE 用の統合 Web サービス・クライアント

ILE用の統合Webサービス・クライアントは、サービス成果物を生成し、ILE(RPG、COBOL、CおよびC++)か、WebサービスまたはAPIコンシュマーとして機能させるメカニズムを提供する。

統合Web サービス・サーバー

Webサービス・エンジンとランタイムはIBM iに統合され、さまざまなクライアントから呼び出せるWebサービスまたはAPIとして、ILEビジネスロジックやSQLを外部化するために使用される。

IWSの機能は、新しいバージョンおよびリリースで大幅に強化されている。最新機能を利用するには、IBM iの最新HTTPグループPTFの適用を推奨する。主要な機能強化点には、下記がある。

・REST APIで呼び出し可能なパラメータを最大248個まで持てる。以前は、パラメータ数は7個に制限されていた(IBM i 7.4 TR6以降)。
・ユーザー指定のサブシステムでの起動が可能(IBM i 7.4 TR1以降)。
・セキュアなHTTPSでの接続が可能(IBM i 7.4 TR7以降)。
・IWSロギング機能が拡張されている。多数のログを含むようになり、JSON形式をサポートしている(IBM i 7.4 TR6以降)。
・HTTPリクエストを通して、直接SQLを使用できる機能を追加(図表1) (IBM i 7.3 TR6以降)。従来は外部システムからODBC/JDBCでDb2 for iを呼び出していたが、HTTPでのアクセスなので、簡単にIBM i資源にアクセスできる。最近はIBM iサービスとしてSQLを利用すると、プログラムレスでさまざまな機能を実現可能である。

図表1 REST API SQLサポート

Webサービス(REST API)の作成および運用管理には、IBM Web Administration for iという専用のGUIが用意されている。これを利用して、ILEアプリケーションのSOAP化、REST化、SQLによるアクセスのWebサービス化がウィザード形式で作成できる。またWebサービスのパフォーマンス管理、セキュリティ管理、開始・終了などの運用管理も可能である。

今回作成するAPIのモデル

REST APIでSQLサポートが追加されたので、ここではデータベースへのREST接続機能の利用法を解説するため、サンプルアプリケーションを用意した。

このサンプルアプリケーションは、「学生情報の登録・照会」を目的にしている。下記の機能を外部のREST APIとして公開し、情報提供するのが狙いである。

・新規の学生情報を登録
・登録済みの学生情報の更新
・登録済みの学生情報の一覧表示
・個別の学生情報の取得
・学生情報を登録から削除

使用されるオブジェクトはSTUDENTDB(スキーマはSTUDENTRSC)と呼ばれるデータベースのみであり、ここに学生情報が保管されている。

まず、以下の手順でこのデータベースを作成しておく(ACSからSQLスクリプトで実行できる)。

1 ライブラリー(スキーマ)の作成

CL: CRTLIB STUDENTRSC

2 データベース・テーブルの作成

CREATE TABLE STUDENTRSC.STUDENTDB
 (“studentID” CHAR (9) NOT NULL, “firstName” CHAR (50) NOT NULL,
 ”lastName” CHAR (50) NOT NULL, “gender” CHAR (10) NOT NULL,
 PRIMARY KEY (“studentID”))

3 データの挿入

INSERT INTO STUDENTRSC.STUDENTDB

 (“studentID”, “firstName”, “lastName”, “gender”) VALUES(‘823M934LA’, ‘Nadir’, ‘Amra’, ‘Male’), (‘826M660CF’, ‘John’, ‘Doe’, ‘Male’),(‘747F023ZX’, ‘Jane’, ‘Amra’, ‘Female’)

4 権限追加

Webサービスを確実に機能させるには、サービスのユーザープロファイルを作成したテーブルに許可する必要がある。

CL: CHGAUT OBJ(‘/qsys.lib/studentrsc.lib/studentdb.file’)

USER(QWSERVICE) DTAAUT(*RWX)

またREST APIの作成前に、以下を検討する必要がある。

・プロシージャーが受け入れる形式 (XML、JSON など) を指定
・プロシージャーが返す形式を指定
・必要に応じて、プロシージャーの入力パラメータとして渡す値を指定

パス・セグメント (/cars/{color})
マトリックス・パラメーター (/cars;color=blue)
クエリー・パラメーター (/cars?color=blue)
Form data
HTTP ヘッダー
HTTP クッキー

・必要に応じて、応答コード と HTTP ヘッダーの出力パラメータを指定
・API実装で使用するSQLステートメント

ここでは、下記のように計画しておく。

・HTTP メソッドと URI のマッピングについては、図表2を参照。

図表2 HTTP メソッドと URI のマッピング

・SQLステートメントの定義については、図表3を参照。

図表3 SQLステートメントの定義

[i Magazine 2023 Winter(2023年2月)掲載]


IBM iユーザーに捧げるAPI入門❷

IBM iのOS機能を利用してAPIを作成する ~統合Webサービス・サーバーの概要と操作方法 <PART1> 

IBM iのOS機能を利用してAPIを作成する ~統合Webサービス・サーバーの作成 <PART2> 

IBM iのOS機能を利用してAPIを作する ~REST APIのサービスを構築 <PART3>

IBM iのOS機能を利用してAPIを作成する ~作成したサービスの管理、テスト、運用例 <PART4>

新着