Contents1. Express.js 설치하기 2. Hello World 3. 미들웨어
Node.js의 기본 모듈인 http 모듈로 웹 서버를 구축할 수 있지만
코드의 가독성과 확장성이 떨어지기 때문에 실제로 서버를 구축할 때에
잘 사용되지는 않습니다.
때문에 이러한 단점을 해결하기 위해 Express.js라는 웹 서버 프레임워크를 사용합니다.
npm i express --save
npm 명령어를 사용해서 express를 설치해 줍니다.
여기서 --save 옵션을 사용하면 dependencies에 추가됩니다.
간단한 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 요청에서 미들웨어 실행