

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` 객체의 속성은 다음과 같이 두 가지가 있습니다.
+ `data` 속성
+ `error` 속성

표준 콜백 메커니즘을 사용하는 경우 이러한 두 가지 속성은 다음 예에서처럼 익명 콜백 함수에 대한 파라미터로 제공됩니다.

```
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();
```