라우터

라우터를 사용 (특정 경로로 들어오는 요청에 대하여 함수를 수행 시킬 수가 있는 기능), Express 가 제공



특정 경로에 대한 요청은 router.route('/process/login').post(...) 이런 방식으로 '해당 경로로 들어 온것에 대해 미들웨어'를 발동 시킬 수 있다


'해당 경로 명과 .html 등의 확장명 붙어 있는 것은 서로 다른 경로로 인식함'




브라우저로 먼저 라우터와 상관 없는 메인 페이지인 Login.html 페이지로 들어간다


http://localhost:3000/Login.html



이 웹페이지의 코드는 아래와 같다


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
<!DOCTYPE html>
 
<html>
<head>
    <meta charset="utf-8" />
    <title>로긴</title>
</head>
<body>
 
    <h1>로그인 Route</h1>
    <br />
    <form method="post" action="/process/Login">
        <table>
            <tr>
                <td><label>아이디</label></td>
                <td><input type="text" name="id"></td>
            </tr>
            <tr>
                <td><label>비번</label></td>
                <td><input type="text" name="passwords"></td>
            </tr>
        </table>
        <td><input type="submit" value="전송" name=""></td>
    </form>
 
</body>
</html>


Login.html




위 그림 처럼 id, pw 를 입력한다음


 전송 버튼을 누르면 


id, pw 가 서버로 전송된다




이때 위 코드에서도 나와 있듯이 form="post' 방식으로 전달 하는데 경로를 /process/Login  으로 설정해 


서버에 전송 할 수 있다






이런 경우 nodejs.js 서버 코드에서  /process/Login 경로로 온 요청에 대해선 Router 를 통해 이에 대해서만 미들웨어가 호출되게 할 수 있다









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
47
48
49
50
51
52
53
54
var express = require('express');
var http = require('http');
var serveStatic = require('serve-static');      //특정 폴더의 파일들을 특정 패스로 접근할 수 있도록 열어주는 역할
var path = require('path');
 
var app = express();      //express 서버 객체
 
var bodyParser_post = require('body-parser');       //post 방식 파서
 
app.set('port'3000);
 
 
//미들웨어들 등록 시작, 아래 미들웨어들은 내부적으로 next() 가실행됨
 
//join은 __dirname : 현재 .js 파일의 path 와 public 을 합친다
//이렇게 경로를 세팅하면 public 폴더 안에 있는것을 곧바로 쓸 수 있게된다
app.use(serveStatic(path.join(__dirname, 'public')));
 
 
//post 방식 일경우 begin
//post 의 방식은 url 에 추가하는 방식이 아니고 body 라는 곳에 추가하여 전송하는 방식
app.use(bodyParser_post.urlencoded({ extended:false }));            // post 방식 세팅
app.use(bodyParser_post.json());                                     // json 사용 하는 경우의 세팅
//post 방식 일경우 end
 
 
 
//라우터를 사용 (특정 경로로 들어오는 요청에 대하여 함수를 수행 시킬 수가 있는 기능을 express 가 제공해 주는것)
var router = express.Router();
 
router.route('/process/login').post(         //이 경로로 들어오는 것은 post 방식으로 처리
    function (req, res)
    {
        console.log('/process/login 라우팅 함수에서 받음');
        var paramID = req.body.id || req.query.id;
        var pw = req.body.passwords || req.query.passwords;
 
        res.writeHead(200, { "Content-Type":"text/html;characterset=utf8" });
        res.write(paramID + " : " + paramID);
        res.end();
    }
);
 
app.use('/', router);       //라우트 미들웨어를 등록한다
 
 
//웹서버를 app 기반으로 생성
var appServer = http.createServer(app);
appServer.listen(app.get('port'),
    function () {
        console.log('express 웹서버 실행' + app.get('port'));
    }
);
 





결과 화면 :



라우터를 통해 처리된 결과를 클라이언트에게 보내준 정보에 출력 결과



반응형

+ Recent posts