[NodeJs] 외부모듈활용 - Express를 활용해 간단한 Framework 만들기. (그 외 유용한 모듈) (3/3)

2021. 4. 30. 00:57 JavaScript BackEnd/Node.js, Express

 

기존에는 

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'

 

데이터 베이스, 파일, 원격저장소에 저장또한 가능하니 찾앙보면서 하면 좋을 것 같습니다.

 

출처 : ourcstory.tistory.com/12?category=664896