
라우팅이란, 네트워크 용어로서 어떠한 네트워크 안에서 통신되는 데이터를 보낼 경로를
선택하는 과정입니다. 간단히 말해서, 갈림길에서 어디로 가야할지를 선택하는 과정을 말합니다.
웹으로 옮겨서 말하자면 만약 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
다시 앱을 실행시켜서 브라우저로 접속해보면 라우팅이 구현된 것을 확인 할 수 있습니다.
'Web - 백엔드 > Node.js' 카테고리의 다른 글
[ Node.js ] mLab을 이용한 MongoDB 연결 3 - CRUD 구현 (2) (0) | 2019.01.29 |
---|---|
[ Node.js ] mLab을 이용한 MongoDB 연결 - CRUD 구현 (1) (0) | 2019.01.28 |
[Node.js] mLab을 이용한 MongoDB 연결 1 (0) | 2019.01.28 |
[Node.js] Express모듈 설치하고 서버 만들기 (0) | 2019.01.28 |
[Node.js] NPM (0) | 2019.01.28 |
댓글