例 14: WHERE 文節を Db2® 表に適用する

次の例では、File Manager Service Provider REST API 読み出しを実行して、Db2® WHERE 文節を使用して結果の表を制限し、その後、結果の表から最初の行を読み取ります。

この例は、サービス・アーカイブが作成され、デプロイされていることを前提とします。SAR ファイル生成時にプロパティーでテンプレートを指定していない場合、サービス・プロバイダーは動的テンプレートを作成し、表のすべての列と行を戻します。例えば、サービス・アーカイブは次のプロパティー・ファイルを使用して作成できます。

name=fmExample14
description=DFG2:DSN81010:EMP MAPPED BY MY.DB2.TEMPLATE(EMP)
version=1.0
provider=filemanager
host=10.1.1.2
port=9043
userid=admin
passwd=s3cr3t
ssid=DFG2
owner=DSN81010
tableName=EMP
timeout=300
connid=default

初回要求

Db2® データ・リソースからデータを読み取る初回 API 呼び出しには、Db2® データ・リソースへの以降のアクセスで呼び出し元を認証できるように、HTTP Basic 認証ヘッダーが必要です。例:

Authorization : Basic dXNlcmlkOnBhc3N3b3Jk

ここで、Basic キーワードに続くストリングは、userid:password の Base64 エンコードを示します。

また、JSON ペイロードがあるすべての要求でも、値が application/json の Content-Type ヘッダーが必要です。

初回要求では、データ・リソースに命名したり、テンプレート情報を指定したりする必要はありません。この情報は API に関連付けられたサービス・アーカイブに既に含まれています。このため、API 呼び出し元が指定する必要があるのは、必要に応じて、オプションの operation パラメーターと position パラメーターのみです。

{
    "operation" : 
    {
        "numRows" : 1,
        "session" : false,
        "where" : "WORKDEPT = 'B01'"
    }
}

この要求では、Db2® の WHERE 文節を適用した後、Db2® サブシステム DFG2 内の、DSN81010 が所有する WORKDEPT = 'B01' 表 EMP から最初の行を読み取ります。この要求により、デフォルト・テンプレートが作成され、応答で行内のすべての列が戻されます。

File Manager/Db2 が false に設定されているため、サービス・プロバイダーは session セッションを維持しません。

成功時の応答

成功時の応答 (HTTP ステータス・コード 200) は次のようになります。

{
    "rows": 
    [
        {
            "last": true,
            "columns": 
            [
                {
                    "PHONENO": "3476",
                    "EDLEVEL": 18,
                    "FIRSTNME": "MICHAEL",
                    "MIDINIT": "L",
                    "BIRTHDATE": "1948-02-02",
                    "SALARY": 41250,
                    "COMM": 3300,
                    "LASTNAME": "THOMPSON",
                    "WORKDEPT": "B01",
                    "HIREDATE": "1973-10-10",
                    "BONUS": 800,
                    "EMPNO": "000020",
                    "JOB": "Manager"
                }
            ]
        }
    ]
}

サービス・プロバイダーによって保守されているセッションがなかったため、呼び出し元は FM/Db2 セッションを終了する 2 番目の要求を出す必要はありません。