MENU

IBM iのOS機能を利用してAPIを作成する ~REST APIのサービスを構築 <PART3> |IBM iユーザーに捧げるAPI入門❷

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

ステップ2  REST APIのサービスを構築

ここからは、図表3のSQLステートメントをもとに、REST APIのサービスを構築する。

①「配置済みサービスの管理」(図表11)で、「配置」をクリックする。

図表11 SQLベースのサービスのデプロイ

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

図表12 Webサービス・タイプの指定

SQLステートメントを処理するデータベース・システムは、デフォルトではローカル・ホスト(統合Webサービス・サーバーが稼働するシステム)になる。データベース・ファイルがリモート・サーバーにあるならば、リモート・サーバーを指定することも可能。ここでは、デフォルトのスキーマに 「studentrsc 」を指定する。

図表13のリソース名に意味のある名前を付ける。ここでは、リソース名は「students」に変更する。リソースにURIパスのテンプレートをセットできる。この例では、リソース名変更後のリソースへのパス情報で十分なので、何も設定しない。「/context-root/students」がURIパスになる。

図表13 リソース名を付ける

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

図表14 セキュリティを設定

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

図表15 SQLステートメントを指定

⑥図表3のSQLステートメントの定義に従って、図表16のように入力する。REMOVEプロシージャーは、既存の学生情報レコードを削除するSQLステートメントになる。続行をクリックする。

図表3 SQLステートメントの定義
図表16 プロシージャ—名とSQLステートメントを入力

⑦パラメータ名がデフォルトのPERM00001になるので、これを変更する(図表17)。

図表17 パラメータ名を変更①

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

図表18 パラメータ名を変更②

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

図表19 SQLステートメントの追加完了

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

図表20 [REMOVE]プロシージャ—の処理方法を設定

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

⑩[ADD]プロジージャー(新規の学生情報の登録)の処理についても、デフォルト値でよいが、SQLステートメント成功時の返信用HTTPステータス・コードに201(Created)が生成された場合に成功とみなす(図表21)。

図表21 [ADD]プロシージャ—の処理方法を設定

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

図表22 [GETBYID]プロシージャ—の処理方法を設定

⑫ [GETALL]プロジージャー(学生情報の全件参照)の処理については、デフォルト値でよい。

⑬リソース・メソッド情報を設定する。それぞれのHTTPメソッドについては、図表2を参照。

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

最初に処理するのは、[REMOVE]プロジージャーの処理である。HTTPリクエストのメソッドはDELETEに設定する。URIパステンプレートにパラメータ形式を指定。図表3に記述されている「/context-root/students/{id}」は、「/{id}」を指定することで、学生のID情報がURIの一部として渡されることを意味する。

出力メディア・タイプは「JSON」を指定する。入力ソースをパス・パラメータとして指定する。URIのパス変数数 id をstudentIDパラメータに指定。これを行うために、インプット・ソースとして*PATH_PARAM を指定し、挿入する「ID」を選択する(図表23)。

図表23 リソース・メソッド情報を設定

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

図表24 [UPDATE]プロシージャ—の処理方法を設定

⑮[ADD]の処理を行う。HTTPリクエストのメソッドはPOSTに設定。ほかはUPDATEと同様である。

⑯[GETBYID]の処理を行う。HTTPリクエストのメソッドはGETに設定。メソッドのURIパステンプレートは、URIパステンプレートにパラメータ形式を指定。入力メディアはALLのままで、出力メディア・タイプは「JSON」を指定する。

さらに入力ソースをパス・パラメータとして指定する。URIのパス変数 idをstudentIDパラメータに指定。これを行うために、インプット・ソースとして*PATH_PARAMを指定し、挿入する「ID」を選択する(図表25)。

図表25 [GETBYID]の処理を行う

⑰[GETALL]の処理は、次のように指定する。HTTPリクエストのメソッドはGETに設定。入力メディアはALLのままで、出力メディア・タイプは「JSON」を指定する。

⑱Webサービス用のユーザーIDを指定する。サービスを実行するためには、ユーザーIDを指定する必要がある。図表26に示すように、サービスを実行するために、「サーバーのユーザーIDを使用」「既存のユーザーIDを指定」、あるいは「認証済ユーザーIDを使用」(このためには、関連するHTTPサーバーでベーシック認証を有効にする必要あり)のいずれかを指定する。

図表26 Webサービス用のユーザーIDを指定

サービスを正しく実行するためには、ユーザーIDのステータスを*ENABLEDにセットし、パスワードに*NONE 以外の値を設定する。ユーザーIDが無効であったり、パスワードに*NONEが設定されると、警告メッセージが出力され、サービスは正しく稼働しない。

さらに、指定したユーザーIDに適切な権限を与え、ライブラリー、データベース、およびファイルなどWebサービスが必要とするリソースやオブジェクトにアクセス可能にする必要がある。

⑲最後に「完了」を選択し、Webサービスを作成する(図表27)。

図表27 Webサービスの作成を完了

 

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