[javascript] 에러 핸들링을 위한 HTTP 상태 코드 활용

웹 애플리케이션을 개발하다 보면 다양한 에러 상황에 대응해야 할 때가 있습니다. 이때 HTTP 상태 코드를 잘 활용하면 사용자에게 적절한 에러 메시지를 전달하고 문제를 해결할 수 있습니다.

HTTP 상태 코드는 클라이언트와 서버가 통신하는 과정에서 발생하는 상태를 표시하는 번호입니다. 가장 잘 알려진 상태 코드는 다음과 같습니다:

에러 핸들링을 위해 이러한 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 문서를 참고하시기 바랍니다.