Javascript/Node.js
NodeJS - Router 사용해 요청 라우팅하기 [ES5]
Back
2018. 10. 7. 17:19
Router
Express 4 에서는 Router 미들웨어가 포함되어 있다.
Router 객체를 참조한 후 route() 메소드를 이용해 라우팅하는 방법인데.
1 2 | var router = express.Router(); router.route('/process/login').post(function(req, res) { | cs |
get(callback) |
GET 방식으로 특정 패스 요청이 발생했을 때 사용할 콜백 함수를 지정합니다. |
post(callback) |
POST 방식으로 특정 패스 요청이 발생했을 때 사용할 콜백 함수를 지정합니다. |
put(callback) |
PUT 방식으로 특정 패스 요청이 발생했을 때 사용할 콜백 함수를 지정합니다. |
delete(callback) |
DELETE 방식으로 특정 패스 요청이 발생했을 때 사용할 콜백 함수를 지정합니다. |
all(callback) |
모든 요청 방식을 처리하며, 특정 패스 요청이 발생했을 때 사용할 콜백 함수를 지정합니다. |
HTML
1 | <form method="post" action="/process/login"> | cs |
form을 action를 지정해 준후
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | var http = require('http') , express = require('express') , static = require('serve-static') , bodyParser = require('body-parser') , path = require('path'); var app = express(); app.use(bodyParser.urlencoded({extended: false})); app.use('/public',static(path.join(__dirname, 'public'))); var router = express.Router(); //form에 action="/process/login"으로 Mapping router.route('/process/login').post(function(req,res){ console.log("미들웨어 1"); //post를 먼저 확인 후 get에서 찾는다. var pId = req.body.id || req.query.id; var pPw = req.body.pw || req.query.pw; res.writeHead('200',{"Content-Type":"text/html; charset=utf-8"}); res.write('post 이다 : '+ '<br>'); res.write('ID : '+pId+ '<br>'); res.write('PW : '+pPw+ '<br>'); res.write('<a href="public/login2.html">로그인</a>'); res.end(); }); app.use('/',router); //index나 에러 메세지 보낼때 기본 패스 처리 //get post 둘다 이곳에서 처리하게 한다. app.all('*',function(req,res){ res.status(400).send('페이지를 찾을수 없습니다.'); }); //put/delete는 쓰지않는다. (해킹할때 공격대상이 될수있다.) http.createServer(app).listen(3000,function(){ console.log('서버 기동'); }); | cs |
var router = express.Router();
express에 있는 router를 사용한다.
router.route('/process/login')
router.route <- 라우터에 라우트에 Path를 지정해준다.
router.route('/process/login').post(
.post()를지 .get()을 할지 정하면 된다.
.post(function(req,res) 는
use와 다르게 next() 매개변수가 없다! 주의 하기
만약 따로 path를 지정 하지않았을때 라면
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | var http = require('http') , express = require('express') , static = require('serve-static') , bodyParser = require('body-parser') , path = require('path'); var app = express(); app.use('/public',static(path.join(__dirname, 'public'))); //body-parser를 사용하겠다는 모듈 app.use(bodyParser.urlencoded({extended: false})); // /public가 패스를 못 찾으면 이쪽으로간다. app.use(function(req,res,next){ console.log("미들웨어 1"); // var pId = req.query.id; // var pPw = req.query.pw; //post를 먼저 확인 후 get에서 찾는다. var pId = req.body.id || req.query.id; var pPw = req.body.pw || req.query.pw; res.writeHead('200',{"Content-Type":"text/html; charset=utf-8"}); res.write('post 이다 : '+ '<br>'); res.write('ID : '+pId+ '<br>'); res.write('PW : '+pPw+ '<br>'); res.write('<a href="public/login.html">로그인</a>'); res.end(); }); http.createServer(app).listen(3000,function(){ console.log('서버 기동'); }); | cs |
1 | app.use(function(req,res,next){ | cs |
path없이 접근하게 된다.