例 6: Db2® データベースを順次読み取る

次の例では、File Manager Service Provider REST API 呼び出しを実行して、Db2® 表から行を読み取る永続 Db2® セッションを開始し、File Manager テンプレートを使用して各行のフィールドをマップします。

初回要求

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

Authorization : Basic dXNlcmlkOnBhc3N3b3Jk

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

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

初回の要求では、データをマップするために、Db2® サブシステムの名前、Db2® 表の所有者、Db2® 表の名前、および File Manager/Db2 テンプレート (オプション) も必要です。テンプレートを指定しない場合、サービス・プロバイダーは動的テンプレートを作成し、表のすべての列と行を戻します。

{
    "resource" :
    {
        "ssid" : "DFG2",
        "owner" : "DSN81010",
        "tableName" : "EMP"
    },
    "template" :
    {
        "templateName" : "DB2.TEMPLATE(EMPTMPL)"
    },
    "operation" : 
    {
        "numRows" : 1,
        "session" : true,
        "timeout" : 300,
        "maxRows" : 0
    }
}

この要求では、Db2® サブシステム DFG2 内の、DSN81010 が所有する Db2® 表 EMP の先頭から 1 行を読み取ります。この要求では、FM/Db2 テンプレート DB2.TEMPLATE(EMPTMPL) を使用して、応答で行列をマップアウトします。

File Manager/Db2 が true に設定されているため、サービス・プロバイダーは session セッションを維持します。セッションは、以降、session が false に設定された要求が実行されるまで、またはセッションでアクティビティーがない状態で 300 秒 (5 分) のタイムアウト期間が経過するまでアクティブのままになります。

maxRows パラメーターでは 0 が指定されています。これは、表内のすべての行を意味します。maxRows が指定されていない場合、デフォルトは 10000 です。

注: 大規模な表のすべての行を読み取る場合、長い時間がかかる場合があります。

session が true に設定されている場合、呼び出し元は初回要求でトークンが戻ることを期待し、resource パラメーターか template パラメーター、または Basic 認証ヘッダーを渡す必要なく後続の呼び出しでトークンを使用できます。

成功時の応答

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

{
    "rows":
    [
        {
            "columns": 
            [
                {
                    "column": "EMPNO",
                    "type": "CH(6)",
                    "value": "000010"
                },
                {
                    "column": "FIRSTNME",
                    "type": "VC(12)",
                    "value": "CHRISTINE"
                },
                {
                    "column": "LASTNAME",
                    "type": "VC(15)",
                    "value": "HAAS"
                },
                {
                    "column": "WORKDEPT",
                    "type": "CH(3)",
                    "value": "A00"
                },
                {
                    "column": "JOB",
                    "type": "CH(8)",
                    "value": "PRES"
                },
                {
                    "column": "SALARY",
                    "type": "DEC(9,2)",
                    "value": 52750
                }
            ]
        }
    ],
    "token": "1zcuItFg8fX18Pjx+PXw9GD29/Tx+Pk="
}

後続の読み取り要求

API 呼び出し元は、応答トークンを使用して後続の要求を実行し、サービス・プロバイダーによって保守される FM/Db2 セッションを再使用できるようになります。例:

{
    "operation" :
    {
        "numRows" : 1,
        "session" : true,
        "token": "1zcuItFg8fX18Pjx+PXw9GD29/Tx+Pk="
    }
}

トークンを渡すとき、resource パラメーターまたは template パラメーターはトークンと関連付けられたセッションによって既に知られているため、呼び出し元はこれらのパラメーターを渡す必要がありません。

API 呼び出し元は、最後の行が読み取られたことを示す、last が true に設定された応答行オブジェクトがあるまで、1 つ以上の行を読み取り続けることができます。例:

{
    "rows" :
    [
        {
            "last" : true,
    … other response fields
        }
    ]
}

セッションの終了

現時点では、API 呼び出し元はアクティブな FM/Db2 セッションを終了する要求を送信します。

{
    "operation" :
    {
        "numRows" : 0,
        "session" : false,
        "token": "1zcuItFg8fX18Pjx+PXw9GD29/Tx+Pk="
    }
}

トークンが有効な場合、session が false に設定された要求を送信すると FM/Db2 セッションは常に終了します。呼び出し元は既に最後の行を読み取っているため、"numRows" : 0 を設定することでもう行を読み取らないようサービス・プロバイダーに指示します。