Text=澤田 英寿 日本アイ・ビー・エム株式会社
ステップ2 REST APIのサービスを構築
ここからは、図表3のSQLステートメントをもとに、REST APIのサービスを構築する。
①「配置済みサービスの管理」(図表11)で、「配置」をクリックする。

②図表12でSOAPあるいはREST Webサービスの作成を選択する。またWebサービスが、ILEプログラム/サービス・プログラムをベースにするか、あるいはSQLステートメントをベースにするかを選択できる。ここでは「*SQL」 を選択して、WebサービスをSQLステートメント・ベースに指定し、Next をクリックする。

SQLステートメントを処理するデータベース・システムは、デフォルトではローカル・ホスト(統合Webサービス・サーバーが稼働するシステム)になる。データベース・ファイルがリモート・サーバーにあるならば、リモート・サーバーを指定することも可能。ここでは、デフォルトのスキーマに 「studentrsc 」を指定する。
③図表13のリソース名に意味のある名前を付ける。ここでは、リソース名は「students」に変更する。リソースにURIパスのテンプレートをセットできる。この例では、リソース名変更後のリソースへのパス情報で十分なので、何も設定しない。「/context-root/students」がURIパスになる。

④図表14は、セキュリティの設定となる。ここではデフォルトのままで作成する。

⑤図表15からは、SQLステートメントを指定していく。「追加」をクリックする。

⑥図表3のSQLステートメントの定義に従って、図表16のように入力する。REMOVEプロシージャーは、既存の学生情報レコードを削除するSQLステートメントになる。続行をクリックする。
⑦パラメータ名がデフォルトのPERM00001になるので、これを変更する(図表17)。

図表18のようにstudentIDに変更する。

⑧同様に(図表3の)残りの全SQLステートメントを追加していく。完了すると、図表19になる。

⑨ここからは、各々のSQLプロシージャーの処理方法を指定する必要がある。まず[REMOVE]プロシージャー(指定したIDの学生情報の削除)についての処理方法を設定する(図表20)。

SQL警告をエラーとみなすと、デフォルト設定として指定する。SQLステートメント実行成功時の返信HTTPステータス・コードに、204(No Content)が生成された場合に成功とみなす。[UPDATE]プロジージャー(学生情報の更新)も同様に設定する(すべてデフォルト設定でよい)。
⑩[ADD]プロジージャー(新規の学生情報の登録)の処理についても、デフォルト値でよいが、SQLステートメント成功時の返信用HTTPステータス・コードに201(Created)が生成された場合に成功とみなす(図表21)。

⑪[GETBYID]プロシージャー(指定した学生IDの情報を参照)の処理方法を設定する。このSQL操作は、「単一行の結果セット」を戻すように設定する。これにより、レスポンスはオブジェクトの配列ではなく、単一オブジェクトを戻すようになる。デフォルトのHTTPステータス・コードとして成功ならば、200(OK)を設定する(図表22)。

⑫ [GETALL]プロジージャー(学生情報の全件参照)の処理については、デフォルト値でよい。
⑬リソース・メソッド情報を設定する。それぞれのHTTPメソッドについては、図表2を参照。

最初に処理するのは、[REMOVE]プロジージャーの処理である。HTTPリクエストのメソッドはDELETEに設定する。URIパステンプレートにパラメータ形式を指定。図表3に記述されている「/context-root/students/{id}」は、「/{id}」を指定することで、学生のID情報がURIの一部として渡されることを意味する。
出力メディア・タイプは「JSON」を指定する。入力ソースをパス・パラメータとして指定する。URIのパス変数数 id をstudentIDパラメータに指定。これを行うために、インプット・ソースとして*PATH_PARAM を指定し、挿入する「ID」を選択する(図表23)。

⑭[UPDATE]の処理を設定する。まず、HTTPリクエストのメソッドはPUTに設定。出力メディア・タイプは「JSON」を指定する。リクエストはクライアント・リクエストのデータ内に入っているので、パラメータをラップすることを指定する(図表24)。

⑮[ADD]の処理を行う。HTTPリクエストのメソッドはPOSTに設定。ほかはUPDATEと同様である。
⑯[GETBYID]の処理を行う。HTTPリクエストのメソッドはGETに設定。メソッドのURIパステンプレートは、URIパステンプレートにパラメータ形式を指定。入力メディアはALLのままで、出力メディア・タイプは「JSON」を指定する。
さらに入力ソースをパス・パラメータとして指定する。URIのパス変数 idをstudentIDパラメータに指定。これを行うために、インプット・ソースとして*PATH_PARAMを指定し、挿入する「ID」を選択する(図表25)。

⑰[GETALL]の処理は、次のように指定する。HTTPリクエストのメソッドはGETに設定。入力メディアはALLのままで、出力メディア・タイプは「JSON」を指定する。
⑱Webサービス用のユーザーIDを指定する。サービスを実行するためには、ユーザーIDを指定する必要がある。図表26に示すように、サービスを実行するために、「サーバーのユーザーIDを使用」「既存のユーザーIDを指定」、あるいは「認証済ユーザーIDを使用」(このためには、関連するHTTPサーバーでベーシック認証を有効にする必要あり)のいずれかを指定する。

サービスを正しく実行するためには、ユーザーIDのステータスを*ENABLEDにセットし、パスワードに*NONE 以外の値を設定する。ユーザーIDが無効であったり、パスワードに*NONEが設定されると、警告メッセージが出力され、サービスは正しく稼働しない。
さらに、指定したユーザーIDに適切な権限を与え、ライブラリー、データベース、およびファイルなどWebサービスが必要とするリソースやオブジェクトにアクセス可能にする必要がある。
⑲最後に「完了」を選択し、Webサービスを作成する(図表27)。

[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>