Express.js는 Node.js 기반의 웹 애플리케이션 프레임워크로서, 서버 사이의 통신을 간편하게 구현할 수 있는 다양한 방법을 제공합니다. 이번 포스트에서는 Express.js를 사용하여 서버 간 통신을 어떻게 구현하는지 알아보겠습니다.
1. HTTP 프로토콜을 이용한 통신
가장 기본적인 방법은 HTTP 프로토콜을 이용하여 서버 간 통신을 하는 것입니다. Express.js에서는 axios
나 fetch
와 같은 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을 이용한 실시간 통신 등 다양한 방법을 사용할 수 있습니다. 특정 상황과 요구에 맞게 적절한 방법을 선택하여 효율적인 서버 간 통신을 구현해보세요.
참고 자료: