본문 바로가기
Web - 백엔드/Node.js

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

by 미래문 2019. 1. 28.
반응형


 

 

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

 

웹으로 옮겨서 말하자면 만약 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

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

 

 

 

 

반응형

댓글