[Node.js] 라우트 분리하기

Jun 3, 2019


개요


간단한 게시글 작성 폼을 만드는데, 게시글을 저장하는 router 를 따로 관리 하려고 한다.

구성


httpMapping2

시나리오


  1. ‘/form’ 에서 입력 받은 값을 post 방식으로 처리한다.
  2. 받는 URI는 ‘/save’ 로 한다.

개념 및 설명


라우팅

라우팅은 URI(또는 경로) 및 특정한 HTTP 요청 메소드(GET, POST 등) 인 특정 엔드 포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것.

각 라우트는 하나 이상의 핸들러 함수를 가질 수 있고, 이러한 함수는 라우트가 일치할 때 실행 된다.


form.js

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

/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});

router.get('/form', function(req, res) {
res.render('form', { title: 'To Do' });
});

module.exports = router;

‘/form’ 경로로 들어오는 요청에 대해서 ‘form(.pug)’ 로 페이지를 띄워 준다.


Pug (Jade)

  • Ruby 스타일의 간단한 문법.
  • 들여쓰기에 주의. (들여 쓸 수록 하위 태그, 일정한 간격이면 2칸이든 4칸이든 상관 없음)
  • 태그를 뺀 html 문법이라고 생각하면 된다.

form.pug

html
head
    title #{title}
body
    form(action='/save' method='post')
        div
            label Title
            br

            input(name='title', type='text', placeholder='제목을 입력하세요')
            br
        div
            input(type='submit')

form 태그의 action 을 ‘/save’ 로 설정하고, HTTP 메소드를 ‘POST’ 로 설정


app.js

  1. 라우팅 파일을 app.js 에 등록한다.

    app.js

     var formRouter = require('./routes/form');
    
  2. express() 설정을 담은 app 변수에 라우팅 파일을 추가한다.

    app.js

     app.use('/save', formRouter);
    

    app.use([param1], [param2], …) 에서 ‘param1’ 에는 모든 유형의 HTTP 요청에 대한 실행 경로가 들어간다.

    따라서 form.pug 의 ‘action’ 메소드의 HTTP 요청 경로를 여기서 매핑시킨다.