개요
간단한 게시글 작성 폼을 만드는데, 게시글을 저장하는 router 를 따로 관리 하려고 한다.
구성
시나리오
- ‘/form’ 에서 입력 받은 값을 post 방식으로 처리한다.
- 받는 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
-
라우팅 파일을 app.js 에 등록한다.
app.js
var formRouter = require('./routes/form');
-
express() 설정을 담은 app 변수에 라우팅 파일을 추가한다.
app.js
app.use('/save', formRouter);
app.use([param1], [param2], …) 에서 ‘param1’ 에는 모든 유형의 HTTP 요청에 대한 실행 경로가 들어간다.
따라서 form.pug 의 ‘action’ 메소드의 HTTP 요청 경로를 여기서 매핑시킨다.