[nodejs] REST API를 위한 비동기 처리 방법

Node.js는 비동기 이벤트 기반의 서버 측 JavaScript 환경으로, 비동기 처리 방식을 사용하여 높은 성능을 제공합니다. REST API를 구축할 때 이러한 비동기 처리를 어떻게 다루어야 하는지 살펴보겠습니다.

콜백 함수 활용

Node.js에서 가장 기본적으로 사용되는 비동기 처리 방법은 콜백 함수(callback function)를 활용하는 것입니다. 이 방식은 함수가 비동기적으로 실행될 때 결과를 처리할 콜백 함수를 전달하는 것을 의미합니다.

const fs = require('fs');

fs.readFile('file.txt', (err, data) => {
  if (err) {
    console.error(err);
  } else {
    console.log(data);
  }
});

위의 예시에서 파일을 읽을 때 발생하는 비동기적인 처리를 콜백 함수를 통해 다루고 있습니다.

프로미스 활용

프로미스(Promise)는 ES6에서 도입된 개념으로, 비동기 처리를 더 편리하게 다룰 수 있도록 도와줍니다. 프로미스를 사용하면 콜백 지옥을 피하고 보다 직관적인 비동기 처리를 구현할 수 있습니다.

const readFile = (file) => {
  return new Promise((resolve, reject) => {
    fs.readFile('file.txt', (err, data) => {
      if (err) {
        reject(err);
      } else {
        resolve(data);
      }
    });
  });
};

readFile('file.txt')
  .then(data => console.log(data))
  .catch(err => console.error(err));

프로미스를 사용하면 thencatch를 사용하여 성공 또는 실패에 따라 처리할 수 있습니다.

async/await 활용

더 나아가, ES7부터 도입된 asyncawait 키워드를 사용하면 비동기 처리를 보다 간단하게 다룰 수 있습니다. async 키워드로 함수를 정의하고, await 키워드를 사용하여 프로미스의 처리를 기다릴 수 있습니다.

const readFile = async (file) => {
  try {
    const data = await fs.promises.readFile(file);
    console.log(data);
  } catch (err) {
    console.error(err);
  }
};

readFile('file.txt');

위의 예시에서는 async 함수 내에서 await를 사용하여 파일을 읽는 비동기적인 작업을 수행하고 있습니다.

Node.js를 사용하여 REST API를 개발할 때, 위의 방법들을 통해 비동기 처리를 보다 효율적으로 다룰 수 있습니다. 콜백 함수, 프로미스, 그리고 async/await를 활용하여 성능 및 가독성을 높인 코드를 작성할 수 있습니다.

참고 자료