Express.js 설치 및 미들웨어 기본 개념

Lia·2021년 6월 23일
0

Node.js

목록 보기
1/5
post-thumbnail
post-custom-banner
Contents
1. Express.js 설치하기
2. Hello World
3. 미들웨어

Express.js 공식문서

Node.js의 기본 모듈인 http 모듈로 웹 서버를 구축할 수 있지만
코드의 가독성과 확장성이 떨어지기 때문에 실제로 서버를 구축할 때에
잘 사용되지는 않습니다.

때문에 이러한 단점을 해결하기 위해 Express.js라는 웹 서버 프레임워크를 사용합니다.


# 01 - Express.js 설치하기

npm i express --save

npm 명령어를 사용해서 express를 설치해 줍니다.
여기서 --save 옵션을 사용하면 dependencies에 추가됩니다.


# 02 - Hello World

간단한 Express.js 코드를 작성하여 Hello World를 띄워보겠습니다.


// app.js

const express = require('express');

const app = express();
app.set('port', process.env.PORT || 3000);

app.get('/', (req, res) => {
	res.send('Hello World');
});

app.listen(app.get('port'), () => {
	console.log(app.get('port'), ' 포트에서 대기중');
});
node app.js

위 명령어로 Express 서버를 실행시킬 수 있습니다.

Express 서버를 실행시키고 localhost:3000 으로 접속하면
Hello World를 볼 수 있습니다.


# 03 - 미들웨어
Express.js 의 공식 홈페이지에 기록된 미들웨어의 설명은 대략적으로 이렇습니다.

미들웨어의 첫 번째 인수로는 주소를 전달하게 됩니다. 첫 번째 인수를 전달해 주지 않으면
미들웨어는 모든 요청에서 실행을 하게 됩니다. 반대로 첫 번째 인수로 주소를 전달하게 된다면
주소에 해당하는 요청에서만 실행되게 됩니다.

미들웨어의 특징은 위에서부터 아래로 순서대로 실행되면서 요청과 응답 사이에
특별한 기능을 추가할 수 있다는 것입니다.

콜백 함수의 세 번째 매개변수는 다음 미들웨어로 넘어가는 함수입니다.
next() 를 호출하지 않으면 다음 미들웨어가 실행되지 않습니다.


// next.js

const express = require('express');

const app = express();
app.set('port', process.env.PORT || 3000);

app.use((req, res, next) => {
	console.log('첫 번째 미들웨어 입니다.');
    	// next();
});

app.use((req, res, next) => {
	console.log('두 번째 미들웨어 입니다.');
});

app.listen(app.get('port'), () => {
	console.log(app.get('port'), ' 포트에서 대기중');
});
node next.js

localhost:3000 으로 접속하면 콘솔창으로 첫 번째 미들웨어는 작동하는 것을 확인할 수 있지만
두 번째 미들웨어는 작동하지 않는것을 확인할 수 있습니다.

next(); 의 주석을 해제하면 두 번째 미들웨어도 작동되는 것을 확인할 수 있습니다.

Express 의 기본 메서드들 중에 자주 사용하는 메서드 들(어디까지나 개인 기준)은 다음과 같습니다.


app.use([path,] callback [, callback...])
path에 해당하는 모든 요청에서 미들웨어 실행
app.get(path, callback [, callback...])
path에 해당하는 GET 요청에서 미들웨어 실행
app.post(path, callback [, callback...])
path에 해당하는 POST 요청에서 미들웨어 실행


본 블로그는 조현영(zerocho)님의 저서 'Node.js 교과서 개정2판'을 참고하여 정리한 글입니다. 이점 참고 부탁드립니다.

profile
하고싶은게 많아요
post-custom-banner

0개의 댓글