[NodeJs] 외부모듈활용 - Express를 활용해 간단한 Framework 만들기. (그 외 유용한 모듈) (3/3)
기존에는
var reqHandler = function(req, res) {
res.writeHead(200, {"Content-Type":"text/html"});
res.end("<h1>Welcome to Server.</h1>");
};
var server = http.createServer(reqHandler);
server.listen(8080, function() {
console.log('running on 8080...');
});
로 사용을 했지만. reqHandler를 만들지 않고, express()를 사용했다.
express를 사용하면
var app = express();
app.use(function(req, res) {
res.send("<h1>Welcome to Server.</h1>");
});
http 모듈만 사용할 경우에는 res.writeHead(), res.end()를 항상 작성해줘야했지만
express를 사용하면 res.send만 사용하면 된다. (이미 writeHead(), end()는 내부에서 동작)
var server = http.createServer(app);
server.listen(8080, function() {
console.log('running on 8080...');
});
var app = express();
app.use(function(req, res, next) {
console.log("url:" + req.url);
next();
});
app.use(function(req, res) {
res.send("<h1>Welcome to Server.</h1>");
});
app.use()는 n번 이상을 사용할 수 있고, 다음 use를 호출하기 위해서는 이전 use 함수에서 next()를 호출해야 합니다.
모듈 단위로 작업을 하기 위해서는 아래와 같이 할 수 있다. (MVC 모듈로 사용할 수 있는 기반이 마련)
/plus에 대한 작업을 하기 위해서는 req.url =='/plus'를 하면
localhost:8080/plus 라고 할 경우에는 console.log('doing for plus')가 호출이 될 것이다.
localhost:8080/minus 라고 할 경우에는 console.log('doing for plus')가 호출이 될 것이다.
localhost:8080/ 라고 할 경우에는 console.log('url:/')가 호출이 될 것이다.
app.use(function(req, res, next){
if (req.url == '/plus') {
console.log('doing for plus');
}
next();
});
app.use(function(req, res, next){
if (req.url == '/minus') {
console.log('doing for minus');
}
next();
});
app.use(function(req, res) {
res.send("<h1>Welcome to Server.</h1>");
});
var server = http.createServer(app);
server.listen(8080, function() {
console.log('running on 8080...');
});
GET / POST 를 나누어 보자.
app.get('/div', function(req, res) {
console.log('doing for div');
res.send('<h1>div</h1>');
});
라고 코드를 작성하면 get에 대한 처리를 해주고 응답을해준다. 이때 주위해야할 점은
app.use에서 next가 없는 function의 위치는 맨 마지막에 가야한다.
morgan (logger) 미들웨어
express에서 사용할 수 있는 Third-party middleware (추가적으로 설치를 해야합니다.
1. 설치하기
npm install morgan (http://github.com/expressjs/morgan)
요청에 따른 로그 출력
var http = require('http');
var express = require('express');
var morgan = require('morgan');
var logger = morgan('combined');
var app = express();
app.use(logger);
app.use(function(req, res) {
res.send('<h1>Logger Test</h1>');
});
var server = http.createServer(app);
server.listen(8080, function() {
console.log("running on 8080.");
});
실행 화면은
::1 - - [17/Mar/2016:06:45:30 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36"
::1 - - [17/Mar/2016:06:45:30 +0000] "GET /favicon.ico HTTP/1.1" 304 - "http://localhost:8080/" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36"
combined 포맷 말고 다른 포맷을 사용하고 싶으면 https://www.npmjs.com/package/morgan
에서 참조
winston
npm install winstom
log를 file로 떨어뜨려주는 역할을합니다. 찾아보시길...
console.log를 사용하지 않고 winston.log를 하면 콘솔과 파일에 출력이 된다.
winston.log('info'
winston.info 등 다양한 레벨로 사용이 가능하다.
winston.log('debug'
데이터 베이스, 파일, 원격저장소에 저장또한 가능하니 찾앙보면서 하면 좋을 것 같습니다.
'JavaScript BackEnd > Node.js, Express' 카테고리의 다른 글
[NodeJs] Web Socket (0) | 2021.04.30 |
---|---|
[NodeJs] 외부 모듈 사용하기 (0) | 2021.04.30 |
[NodeJs] Ajax를 이용한 화면 업데이트 (0) | 2021.04.30 |
[NodeJs] Express 프로젝트 시작하기 (MVC Pattern / ejs) (0) | 2021.04.30 |
[NodeJs] 외부모듈활용 - Express를 활용해 간단한 Framework 만들기. (Router/GET/POST) (2/3) (0) | 2021.04.30 |
[NodeJs] 외부모듈활용 - Express를 활용해 간단한 Framework 만들기. (1/3) (0) | 2021.04.30 |
[NodeJs] 외부모듈활용 - Aync (0) | 2021.04.30 |
[NodeJs] 외부모듈사용하기 - EJS 모듈 (0) | 2021.04.29 |