No img


[Node.js]Node.JS Study - express

Posted by bonggang | 2019. 12. 29. 04:33

express는 웹 서버를 구성할 때 사용되는 기본적인 것들을 구현해둔 것으로 http 모듈 위에서 동작한다.

 

package.json 생성


$npm init

- 패키지에 관한 정보와 의존 중인 모듈 및 패키지의 정보 저장

 

Express 설치


$ npm install express --save

 

Express 서버 생성


var express = require('express')
    ,http = require('http');

//express 객체 생성
var app = express();

//기본 포트를 app 객체 속성으로 설정
// set -> 서버 설정을 위한 속성 지정
app.set('port', process.env.PORT||3000);

//Express 서버 시작
// get -> 서버 설정을 위해 지정된 속성 가져오기
http.createServer(app).listen(app.get('port'), function(){
    console.log('익스프레스 서버 시작');
});

 

익스프레스 서버가 가진 주요 메소드

메소드 설명
set(name, value) 서버 설정 속성 지정
get(name) 서버 속성 가져오기
use([path,] function[,function...]) 미들웨어 함수 사용
get([path,] function) 특정 경로 요청 정보 처리

 

미들웨어 사용하기


미들웨어: 중간 처리를 위한 함수

웹 요청과 응답에 관한 정보를 사용해 필요한 처리를 진행할 수 있도록 독립된 함수로 분리한 것으로 use() 메소드를 사용해 등록한다. 각각의 미들웨어는 next() 메소드를 호출하여 그다음 미들웨어가 처리할 수 있도록 순서를 넘길 수 있다.

 

코드

var express = require('express')
    ,http = require('http');

//express 객체 생성
var app = express();

//기본 포트를 app 객체 속성으로 설정
// set -> 서버 설정을 위한 속성 지정
app.set('port', process.env.PORT||3000);

app.use(function(req, res, next){
    console.log('첫 번째 미들웨어 요청');
    req.contents = 'first';
    next();
});

app.use('/', function(req,res,next){
    console.log('두 번째 미들웨어 요청');
    res.send({contents: req.contents});
});

//Express 서버 시작
// get -> 서버 설정을 위해 지정된 속성 가져오기
http.createServer(app).listen(app.get('port'), function(){
    console.log('익스프레스 서버 시작');
});

 

실행 결과

 

 

 

미들웨어 사용하기2


라우터: 특정 지정 라우트가 실행되었을 때 실행되는 미들웨어. 클라이언트의 요청 경로를 보고 요청 정보를 처리할 수 있는 곳으로 기능을 전달해 주는 역할을 담당한다.

static 미들웨어: 특정 폴더의 파일들을 특정 패스로 접근할 수 있도록 설정

 

$ npm install server-static --save
$ npm install body-parser --save

- 외장 모듈 미들웨어 설치

 

코드

var express = require('express')
    ,http = require('http');

//미들웨어 호출
var static = require('serve-static')
    , bodyParser = require('body-parser');

//라우터 등록
var router = express.Router();
router.route('/rttest').get(function(req,res){
    console.log('라우팅 테스트 페이지');

    res.send({contents: 'rt test page'});
});

//express 객체 생성
var app = express();

//기본 포트를 app 객체 속성으로 설정
// set -> 서버 설정을 위한 속성 지정
app.set('port', process.env.PORT||3000);

//static 미들웨어 사용, /public 패스로 public 폴더 파일들 접근 허용
app.use('/public', static(path.join(__dirname, 'public')));

//bodyparser 미들웨어 사용
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());

//app 객체에 라우터 등록
app.use('/', router)

app.use(function(req, res, next){
    console.log('첫 번째 미들웨어 요청');
    req.contents = 'first';
    next();
});

app.use('/', function(req,res,next){
    console.log('두 번째 미들웨어 요청');
    res.send({contents: req.contents});
});

//Express 서버 시작
// get -> 서버 설정을 위해 지정된 속성 가져오기
http.createServer(app).listen(app.get('port'), function(){
    console.log('익스프레스 서버 시작');
});

module.exports = router;

 

실행 결과

 

 

오류 페이지 설정


웹 서버에 등록되지 않은 경로의 경우 문서를 찾을 수 없다는 디폴트 메시지가 나타난다. 이것을 우리가 원하는 오류 페이지로 바꿔보자. 이를 위해서는 우리가 지정한 경로 외의 모든 경로에 대해 오류 페이지가 보이도록 처리해주면 된다.

(라우터 미들웨어는 특정 경로가 등록되어 있는지 순서대로 확인하여 처리한다.)

......

app.all('*', function(req, res){
	res.status(404).send('페이지를 찾을 수 없습니다.');
});

......

 

express-error-handler 미들웨어 사용하기

......

var expressErrorHandler = require('express-error-handler');

var errorHandler = expressErrorHandler({
		static: {
        	'404': 'html 경로'
        }
	}
});

app.use(expressErrorHandler.httpError(404));
app.use(errorHandler);

......

 

설치

$ npm install express-error-handler --save

'CS > Web & Network' 카테고리의 다른 글

TCP vs UDP  (0) 2020.10.05
흐름 제어 및 오류 제어  (0) 2020.10.05
OSI 7계층 모델  (0) 2020.10.05
[Node.js]Node.JS Study - 모듈  (0) 2020.06.25
[통신] http 통신 vs socket 통신  (0) 2020.06.16
[Tistory] 스킨 만들기 - 2. skin.html  (0) 2020.06.03
[Tistory] 스킨 만들기 - 1.기본구조  (0) 2020.06.02
[Node.js]Node.JS Study - 기본 정리  (0) 2019.12.29