codestates / codestates/BookDam

22.01.13 Error Handling

Open
#149 0 comments 0 reactions 1 assignee Claimed by @sangkwonkim View on GitHub
Complete sangkwonkim Server
Dominant language
JavaScript
Stars
1
Forks
1
PR merge metrics
No merged PRs in 30d

Description

### 어떤 에러인가요?
- 알라딘 도서 검색 api를 이용할 때 검색 결과가 없다면 빈 값으로 출력이 되어 빈 값일 때 별도의 처리를 할 수 없었습니다.
- object에 검색 결과가 담기기에 object.length를 했을 때 catch 에러가 출력되는 에러가 있었습니다.
```js
axios.get(api_url)
.then((result) => {
parser(result.data, function (err, data) {
res.send(data.object.item);
});
})
.catch((error) => {
res.status(400).json({ message: 'failure', error: error });
});
```

### 에러 핸들링 방법
```js
알라딘에서 받은 XML 파일을 JSON파일로 파싱할 때 나오는 data 파일에서 totalResults 를 이용해서 상황별로 에러처리를 할 수 있었습니다.
{
'$': { xmlns: 'http://www.aladin.co.kr/ttb/apiguide.aspx' },
title: [ '알라딘 검색결과 - rlatkdrnjs' ],
link: [
'http://www.aladin.co.kr/search/wsearchresult.aspx?KeyTitle=rlatkdrnjs&SearchTarget=book'
],
language: [ 'ko' ],
copyright: [ '©copyright 2008 aladin' ],
pubDate: [ 'Thu, 13 Jan 2022 14:21:45 GMT' ],
totalResults: [ '0' ],
startIndex: [ '1' ],
itemsPerPage: [ '10' ],
query: [ 'rlatkdrnjs' ],
version: [ '20070901' ],
searchCategoryId: [ '0' ],
searchCategoryName: [ '전체' ]
}
```
```js
.then((result) => {
parser(result.data, function (err, data) {
if(data.object.totalResults[0] === '0') {
return res.status(400).send({message : '찾는 결과가 없습니다.'})
}
else if(err) {
return res.status(400).send({message : 'failure'})
}
else {
return res.status(200).send(data.object.item);
}
});
})
.catch((error) => {
res.status(400).json({ message: `${req.query.query}책 검색에 실패했습니다.`});
});
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.