[javascript] Express.js에서의 서버 간 통신 방법

Express.js는 Node.js 기반의 웹 애플리케이션 프레임워크로서, 서버 사이의 통신을 간편하게 구현할 수 있는 다양한 방법을 제공합니다. 이번 포스트에서는 Express.js를 사용하여 서버 간 통신을 어떻게 구현하는지 알아보겠습니다.

1. HTTP 프로토콜을 이용한 통신

가장 기본적인 방법은 HTTP 프로토콜을 이용하여 서버 간 통신을 하는 것입니다. Express.js에서는 axiosfetch와 같은 HTTP 클라이언트를 사용하여 다른 서버에 HTTP 요청을 보낼 수 있습니다.

const axios = require('axios');

axios.get('http://api.example.com/data')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

위의 예제 코드에서는 axios를 사용하여 http://api.example.com/data에 GET 요청을 보내고 응답을 받아옵니다. 응답은 response.data를 통해 접근할 수 있습니다.

2. RESTful API를 통한 통신

Express.js는 RESTful API를 쉽게 구축할 수 있는 기능을 제공합니다. RESTful API는 각각의 엔드포인트에 해당하는 URL에 HTTP 메서드를 사용하여 다른 서버와 통신합니다.

// GET 요청으로 데이터를 받아오는 예제
app.get('/data', (req, res) => {
  // 데이터 처리 로직
  const data = { message: 'Hello, world!' };
  res.json(data);
});

// POST 요청으로 데이터를 전송하는 예제
app.post('/data', (req, res) => {
  const newData = req.body;
  // 데이터 처리 로직
  res.json({ success: true });
});

위의 예제 코드에서 'GET /data' 엔드포인트에 대한 요청을 처리하는 핸들러에서는 처리 로직에 따라 데이터를 응답으로 반환합니다. 'POST /data' 엔드포인트에 대한 요청을 처리하는 핸들러에서는 전달받은 데이터를 처리 후 응답으로 성공 여부를 반환합니다.

3. WebSocket을 이용한 실시간 통신

Express.js에서는 WebSocket을 사용하여 실시간 통신을 구현할 수도 있습니다. 이를 통해 서버와 클라이언트 간의 양방향 통신을 할 수 있습니다.

const app = require('express')();
const server = require('http').createServer(app);
const io = require('socket.io')(server);

io.on('connection', (socket) => {
  console.log('A user connected');
  
  socket.on('message', (data) => {
    console.log('Received message:', data);
    io.emit('message', data); // 모든 클라이언트에게 메시지 전송
  });

  socket.on('disconnect', () => {
    console.log('A user disconnected');
  });
});

server.listen(3000, () => {
  console.log('Server is running on port 3000');
});

위의 예제 코드는 Express.js와 Socket.io를 사용하여 실시간 채팅 기능을 구현한 것입니다. 클라이언트에서 메시지를 보내면 서버에서는 해당 메시지를 모든 클라이언트에게 전송합니다.

마무리

Express.js를 사용하여 서버 간 통신을 구현하는 방법을 알아보았습니다. HTTP 프로토콜을 이용한 통신, RESTful API를 통한 통신, 그리고 WebSocket을 이용한 실시간 통신 등 다양한 방법을 사용할 수 있습니다. 특정 상황과 요구에 맞게 적절한 방법을 선택하여 효율적인 서버 간 통신을 구현해보세요.

참고 자료: