Web - 백엔드/Node.js

[ Node.js ] Express 모듈을 이용한 라우팅

미래문 2019. 1. 28. 21:08
반응형


 

 

라우팅이란, 네트워크 용어로서 어떠한 네트워크 안에서 통신되는 데이터를 보낼 경로를
선택하는 과정입니다. 간단히 말해서, 갈림길에서 어디로 가야할지를 선택하는 과정을 말합니다.

 

웹으로 옮겨서 말하자면 만약 http://futuregate.com/ 이 있다고 가정하면

그 밑에는 http://futuregate.com/board, http://futuregate.com/login 등 여러가지 하위 디렉터리가 있을 수 있는데 이러한 것들을 가능하게 하는 과정을 라우팅이라고 합니다.

라우팅을 구현하기 전에, 일단 기본 서버 틀부터 작성해 보겠습니다.

server.js

var express = require('express');
const app = express();

app.get('/', (req, res) => {
    res.send("라우팅 테스트");
});
    
app.listen(5000, (req, res) => {
    console.log("서버 실행중..");
});

위의 코드는 그저 / (루트) 에 접속 했을 때 "라우팅 테스트"라는 메세지를 출력하는 간단한 예제 입니다.

여기서, app.get() 함수 안에 '/' 가 바로 루트 디렉터리를 뜻하며, 실제로 루트에 접속했을 때 res.send를 통해서 "라우팅 테스트"라는 글을 출력하도록 합니다.

node server.js

명령어를 실행하여 실제 접속해 확인해 봅니다.

 

그렇다면 다음과 같은 예제는 어떨까요?

var express = require('express');

const app = express();


app.get('/', (req, res) => {
    res.send("라우팅 테스트");
});

app.get('/login', (req, res) => {
    res.send("로그인");
});

app.listen(5000, (req, res) => {
    console.log("서버 실행중..");
});

바뀐 것은 앞서 본 코드에서 app.get함수를 하나 더 추가하고, 루트 디렉터리에 하위 항목으로 login을 적어

"로그인"을 출력하도록 한 것 밖에 없습니다. 위 코드를 다시 실행하고, 실제로 /login에 접속해보면

 

"로그인" 이라고 올바르게 출력되는 것을 볼 수 있습니다. 이렇게 해서 라우팅을 구현 한 것입니다.

하지만, 실제 웹 서비스를 구현할 때 규모가 점점 커진다면 어떻게 될까요?

server.js 안에 /login, /logout, /board 등 수많은 하위 디렉터리를 만들어야 할것이며, 또한 게시물을 구별하기위해 /board/123431 와 같은 수 많은 라우팅을 server.js 안에 구현해야 할 것입니다.

이런식으로 구현하면, 너무 많은 라우팅이 한번에 몰려있기 때문에 유지보수가 어려워 지고, 코드의 가독성도 떨어질 것입니다. 그렇기 때문에 라우터를 분리 시키는 과정이 꼭 필요합니다. 코드로 한번 구현해보도록 하겠습니다.

최상위 폴더에 router라는 폴더를 만든 후, 예제를 위해 login.js 와 register.js를 생성합니다.

 

그 다음, login.js 를 다음과 같이 작성합니다.

/router/login.js

const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
    res.send("로그인");
});

router.get('/logout', (req, res) => {
    res.send("로그아웃");
});

module.exports = router;

express 모듈의 Router() 를 이용하면, 라우팅을 다른 js 파일에서도 가능하게 합니다.

그다음, 비슷하게 register.js 또한 작성합니다.

/router/register.js

const express = require('express');
const router = express.Router();

router.get('/', (req, res) => {
    res.send("회원가입");
});

router.get('/done', (req, res) => {
    res.send("회원가입 완료");
});

module.exports = router;

라우터를 모두 만들었으므로 server.js에서 라우터들을 불러오기 위한 코드가 필요합니다.

따라서 server.js를 아래와 같이 수정합니다.

var express = require('express');
const app = express();

const login = require('./router/login');
const register = require('./router/register');

app.use('/api/login', login);
app.use('/api/register', register);


app.listen(5000, (req, res) => {
    console.log("서버 실행중..");
});

login과 register 변수를 선언하여 router폴더에 있는 라우터들을 가져옵니다.

그리고, app.use()를 통해서 어떠한 디렉터리에 접근하면 이 라우터를 쓰겠다는 명시를 해주면 라우팅의 구현이 끝이 나게 됩니다.

node server.js

다시 앱을 실행시켜서 브라우저로 접속해보면 라우팅이 구현된 것을 확인 할 수 있습니다.

 

 

 

 

반응형