라우터
라우터를 사용 (특정 경로로 들어오는 요청에 대하여 함수를 수행 시킬 수가 있는 기능), 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')); } ); |
결과 화면 :
라우터를 통해 처리된 결과를 클라이언트에게 보내준 정보에 출력 결과
반응형
'서버(Server) > Server&Nodejs&DB' 카테고리의 다른 글
Nodejs : Express 쿠키 & 라우터 (0) | 2018.05.02 |
---|---|
Nodejs , Express : URL 요청파라미터와 등록되지 않은 Path일 경우 예외처리 (0) | 2018.05.02 |
nodejs : Express, 로그인 입력과 버튼을 통해 값 post 방식으로 받기 (0) | 2018.05.02 |
nodejs : Express, 'serve-static' 특정 폴더를 public 설정하여 파일에 바로 접근하기, get, post 방식 (0) | 2018.05.01 |
nodejs : Express, 요청 파라미터 query.name 와 redirect (0) | 2018.05.01 |