반응형
12-23 19:41
- Today
- Total
Link
개발하는 고라니
[Node.js] 요청 라우팅 - Router 본문
반응형
Router
node.js를 공부하던 도중 http를 사용하다가 express 모듈을 사용해서 웹 서버를 간단하게 구현해보았다. use()를 이용해 미들웨어를 등록하고 특정 url로의 주소매핑도 해보았는데, get과 post를 나누고 싶던 찰나 Router를 사용하면 된다는 것을 알았다.
- Express 4에는 Router 미들웨어가 포함됨
- Router 객체를 참조한 후 route() 메서드를 이용해 라우팅함
var router = express.Router(); //router 객체가 반환
router.route('/process/login').post(function(request, response) { ... });
...
app.use('/', router); /* 마지막에 이것을 넣어줘야함 */
method name | desc |
get( callback ) | GET 방식으로 특정 패스 요청이 발생 시, 사용할 콜백 함수 지정 |
post( callback ) | POST 방식으로 .. |
put( callback ) | PUT 방식으로 .. |
delete( callback ) | DELETE 방식으로 .. |
all( callback ) | 모든 요청 방식을 처리하며, 특정 패스 요청이 발생 시, 사용할 콜백 함수를 지정 |
로그인 폼에서 로그인 정보를 POST로 보내 body에 담긴 정보를 받아내는 작업까지를 해보도록 하자.
//login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="/login" method="post">
<div>
<input type="text" name="id">
</div>
<div>
<input type="text" name="pw">
</div>
<button>Submit</button>
</form>
</body>
</html>
//app5.js
var express = require('express');
var http = require('http');
var path = require('path');
var static = require('serve-static');
var bodyParser = require('body-parser');
var fs = require('fs');
var router = express.Router();
var app = express();
app.set('port', process.env.PORT || 3000);
app.use('/public', static(path.join(__dirname, 'public')));
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());
/* GET /login URL에 대한 미들웨어 생성, 매핑 */
app.route('/login').get((request, response) => {
console.log("/login GET");
fs.readFile('html/login.html', 'utf8', (err, data) => {
if(err) throw err;
console.log('login.html 읽음' + data);
//response.writeHead(200, {"Content-Type":"text/html; charset=utf8"});
response.send(data);
});
});
/* POST /login URL에 대한 미들웨어 생성, 매핑 */
app.route('/login').post((request, response) => {
console.log('/login POST');
var body = request.body;
var id = body.id;
var pw = body.pw;
console.log(body);
console.log('id : ' + id + ', ' + 'pw : ' + pw);
response.redirect('/');
});
/* Add router Middleware */
app.use('/', router);
/* Web Server 생성 */
http.createServer(app).listen(app.get('port'), ()=>{
console.log(`Express Server is running on ${app.get('port')}`);
});
오류 페이지 보여주기
> HTTP 통신 중 에러를 만나게 될 경우 (예: 404, 402, 500, 403, ...)
app.all("*", (request, response) => {
response.status(400).send('<h1>400 ERROR Occured!!</h1>');
});
# Reference
Do it! Node.js 프로그래밍(개정판) 인프런 강의
반응형
'Framework > Node.js' 카테고리의 다른 글
[Node.js] MongoDB CRUD (0) | 2021.04.25 |
---|---|
[Node.js] 파일 업로드 (0) | 2021.04.24 |
[Node.js] Node.js Tutorial (3) - File System (0) | 2021.04.16 |
[Node.js] Node.js Tutorial (2) (0) | 2021.04.16 |
[Node.js] Node.js Tutorial (1) (0) | 2021.04.16 |
Comments