Back Ground

NodeJS - Router 사용해 요청 라우팅하기 [ES5] 본문

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를 지정해준다.



1
<form action="/" method="post">
cs
또는 method="get"

방식에 맞춰서   

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를 지정 하지않으니 public이 없다면 도메인주소 경로부터

path없이 접근하게 된다.


'Javascript > Node.js' 카테고리의 다른 글

NodeJS - ES2015+  (0) 2019.01.18
NodeJS - RestFul [ES5]  (0) 2018.11.11
NodeJS - Static [ES5]  (0) 2018.10.07
NodeJS - Request [ES5]  (0) 2018.10.04
NodeJS - Express의 요청 객체와 응답 객체 [ES5]  (0) 2018.09.20
Comments