[javascript] 에러 핸들링을 위한 HTTP 상태 코드 활용
웹 애플리케이션을 개발하다 보면 다양한 에러 상황에 대응해야 할 때가 있습니다. 이때 HTTP 상태 코드를 잘 활용하면 사용자에게 적절한 에러 메시지를 전달하고 문제를 해결할 수 있습니다.
HTTP 상태 코드는 클라이언트와 서버가 통신하는 과정에서 발생하는 상태를 표시하는 번호입니다. 가장 잘 알려진 상태 코드는 다음과 같습니다:
- 200: 성공적인 요청을 나타냄
- 400: 잘못된 요청을 나타냄
- 401: 권한이 없는 요청을 나타냄
- 403: 접근이 금지된 요청을 나타냄
- 404: 찾을 수 없는 페이지를 나타냄
- 500: 서버 내부 에러를 나타냄
에러 핸들링을 위해 이러한 HTTP 상태 코드를 활용하는 방법에 대해 알아보겠습니다.
1. 예외 처리로 상태 코드 전송
app.get('/api/posts/:id', (req, res) => {
const postId = req.params.id;
try {
const post = getPostById(postId);
if (!post) {
res.status(404).send('해당 포스트를 찾을 수 없습니다.');
return;
}
res.status(200).send(post);
} catch (error) {
res.status(500).send('서버 내부 에러가 발생했습니다.');
}
});
위의 예제 코드는 /api/posts/:id
엔드포인트로 GET 요청이 들어왔을 때, 해당하는 포스트를 찾아서 반환합니다. 만약 찾을 수 없는 경우 404 상태 코드를, 서버 내부에서 에러가 발생한 경우 500 상태 코드를 반환하도록 구현되어 있습니다.
2. HTTP 모듈로 상태 코드 전송
const http = require('http');
const server = http.createServer((req, res) => {
const url = new URL(req.url, `http://${req.headers.host}`);
if (url.pathname === '/api/posts') {
const postId = url.searchParams.get('id');
try {
const post = getPostById(postId);
if (!post) {
res.statusCode = 404;
res.end('해당 포스트를 찾을 수 없습니다.');
return;
}
res.statusCode = 200;
res.end(JSON.stringify(post));
} catch (error) {
res.statusCode = 500;
res.end('서버 내부 에러가 발생했습니다.');
}
}
});
server.listen(3000);
위의 예제 코드는 Node.js의 http
모듈을 사용하여 HTTP 서버를 생성합니다. GET 요청이 /api/posts
경로로 왔을 때, 해당하는 포스트를 찾아서 반환합니다. 예외 처리를 통해 404와 500 상태 코드를 전송하도록 구현되어 있습니다.
HTTP 모듈을 사용할 때는 res.statusCode
를 사용하여 상태 코드를 설정한 후, res.end()
로 응답을 전송합니다.
결론
HTTP 상태 코드를 적절하게 활용하여 에러 핸들링을 구현하는 것은 웹 애플리케이션 개발에서 중요한 부분입니다. 클라이언트에게 적절한 정보를 제공하여 사용자 경험을 개선하고, 문제를 신속하게 해결할 수 있도록 노력해야 합니다.
더 자세한 상태 코드 및 사용법은 MDN 문서를 참고하시기 바랍니다.