

AWS SDK for JavaScript v2 はサポート終了となりました。[AWS SDK for JavaScript v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/) に移行することをお勧めします。その他の詳細、移行方法については、こちらの[発表内容](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/)を参照してください。

# レスポンスオブジェクトの使用
<a name="the-response-object"></a>

サービスオブジェクトメソッドは呼び出されると、`AWS.Response` オブジェクトをコールバック関数に渡すことで返します。`AWS.Response` オブジェクトのプロパティを通じて、レスポンスの内容にアクセスします。レスポンスの内容へのアクセスに使用する `AWS.Response` オブジェクトには、2 つのプロパティがあります。
+ `data` プロパティ
+ `error` プロパティ

標準のコールバックメカニズムを使用する場合、次の例に示すように、これら 2 つのプロパティは無名コールバック関数のパラメータとして提供されています。

```
function(error, data) {
    if (error) {
        // error handling code
        console.log(error);
    } else {
        // data handling code
        console.log(data);
    }
}
```

## レスポンスオブジェクトで返されたデータへのアクセス
<a name="response-data-property"></a>

`data` オブジェクトの `AWS.Response` プロパティには、サービスリクエストによって戻された、シリアル化されたデータが含まれます。リクエストが成功すると、`data` プロパティには、返されたデータへのマップを含むオブジェクトが含まれます。エラーが発生した場合、`data` プロパティは null になることがあります。

これは、DynamoDB テーブルの `getItem` メソッドを呼び出して、ゲームの一部として使用するイメージファイルのファイル名を取得する例です。

```
// Initialize parameters needed to call DynamoDB
var slotParams = {
    Key : {'slotPosition' : {N: '0'}},
    TableName : 'slotWheels',
    ProjectionExpression: 'imageFile'
};

// prepare request object for call to DynamoDB
var request = new AWS.DynamoDB({region: 'us-west-2', apiVersion: '2012-08-10'}).getItem(slotParams);
// log the name of the image file to load in the slot machine
request.on('success', function(response) {
    // logs a value like "cherries.jpg" returned from DynamoDB
    console.log(response.data.Item.imageFile.S);
});
// submit DynamoDB request
request.send();
```

この例では、DynamoDB テーブルは `slotParams` のパラメータで指定されたスロットマシンプルの結果を示すイメージのルックアップです。

`getItem` メソッドの呼び出しが成功すると、`AWS.Response` オブジェクトの `data` プロパティには DynamoDB が返す `Item` オブジェクトが含まれます。返されるデータは、リクエストの `ProjectionExpression` パラメータに従ってアクセスされます。この場合、これは `imageFile` オブジェクトの `Item` メンバーを表しています。`imageFile` メンバーが文字列値を保持しているため、`S` の `imageFile` 子メンバーの値を通してイメージ自体のファイル名にアクセスします。

## 返されたデータによるページング
<a name="response-paged-data"></a>

サービスリクエストによって返された `data` プロパティの内容が複数のページにわたる場合があります。`response.nextPage` メソッドを呼び出すことで、次のページのデータにアクセスできます。このメソッドは新しいリクエストを送信します。リクエストからのレスポンスは、コールバックまたは、成功リスナーとエラーリスナーのどちらかでキャプチャできます。

`response.hasNextPage` メソッドを呼び出すことで、サービスリクエストによって返されたデータに追加のデータページがあるかどうかを確認できます。このメソッドは、`response.nextPage` を呼び出すと追加のデータが返されるかどうかを示すブール値を返します。

```
s3.listObjects({Bucket: 'bucket'}).on('success', function handlePage(response) {
    // do something with response.data
    if (response.hasNextPage()) {
        response.nextPage().on('success', handlePage).send();
    }
}).send();
```

## レスポンスオブジェクトからエラー情報へのアクセス
<a name="response-error-property"></a>

`error` オブジェクトの `AWS.Response` プロパティには、サービスエラーまたは転送エラーが発生した場合に利用可能なエラーデータが含まれます。返されるエラーは次の形式になります。

```
{ code: 'SHORT_UNIQUE_ERROR_CODE', message: 'a descriptive error message' }
```

エラーが発生した場合、`data` プロパティの値は `null` です。エラー状態にある可能性のあるイベントを処理する場合、`error` プロパティの値にアクセスする前に、`data` プロパティが設定されているかどうかを常に確認してください。

## 生成元リクエストオブジェクトへのアクセス
<a name="response-request-property"></a>

`request` プロパティは、生成元の `AWS.Request` オブジェクトへのアクセスを提供します。元の `AWS.Request` オブジェクトを参照して、送信された元のパラメータにアクセスするのに便利です。次の例では、`request` プロパティを使用して元のサービスリクエストの `Key` パラメータにアクセスします。

```
s3.getObject({Bucket: 'bucket', Key: 'key'}).on('success', function(response) {
   console.log("Key was", response.request.params.Key);
}).send();
```