Back
Featured image of post [Node.js] Express 설치 및 실행해보기

[Node.js] Express 설치 및 실행해보기

http모듈 대신 express로 편하게 작업하자

개요

기존 http모듈로 서버를 구축 해서 간단한 요청과 응답 프로세스를 경험해보았는데 여타 언어들도 그렇듯이 프레임워크를 사용하면 더욱 효율적으로 작업을 할 수 있다. node.js 생태계에서는 압도적으로 express.js를 많이 사용한다.

설치하기

npm 환경에서 install 명령어를 통해 express를 설치한다.

npm install express

기본 구조

기본적인 서버를 구축한 소스이다.
http 모듈로 구축했을 때 URL도 파싱해야하고, if문으로 분기처리하기 수고스러웠는데 상당히 깔끔해졌다.
각 라우터마다 요청, 응답 객체를 받아와 여러 형태로 받거나 전달할 수 있다.

//app.js
const express = require('express');
const app = express();

//get 메서드
app.get('/', (req, res) => {
    //200 응답을 지정하고, 메시지를 전송한다.
    res.status(200).send('hello express server!!');
});

//post 메서드
app.post('/write', (req, res) => {
    /* code */
});

//서버 실행
app.listen(8082, () => {
    console.log('start express server');
});

모니터링 플러그인

nodemon은 개발 생산성을 높여주는 모니터링 플러그인이다.
보통 파일이 변경되면 서버를 종료하고 다시 실행시키는데 자동으로 프로젝트내의 파일들의 변경 사항을 감지해서 자동적으로 재시작해준다. cli 환경에서 실행되기 때문에 global 환경으로 설치해준다.

#설치
npm install -g nodemon

#nodemon으로 앱 실행
nodemon app

package.json에 start 스크립트로 셋팅해두면 npm start로 간편히 실행시킬 수 있다.
(정식으로는 npm run start이지만, run 생략가능)

"script" : {
    "start" : "nodemon app"
}

nodemon으로 앱을 실행하면 파일이 바뀌면 알아서 재시작해준다.

> npm-test@1.0.0 start
> nodemon app
[nodemon] 2.0.13
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node app.js`
start express server

sendFile

express에서는 fs모듈 필요 없이 sendFile메서드로 html파일을 브라우저에 전달할 수 있다.

project
├── app.js
├── html
│   └── about.html
├── package-lock.json
└── package.json
const path = require('path');
app.get('/about', (req, res) => {
    res.sendFile(path.join(__dirname, '/html/about.html'));
});

라우터 사용시 주의사항

express에서 api를 요청받을 때 요청 경로를 지정한다는 의미로 라우팅이라는 용어가 등장하는데, 이를 제어하는 부분이 라우터이다.
한 라우터에서 여러개의 응답을 보내게 된다면 에러가 발생하는 것을 꼭 알아두자. (반드시 단일 요청에는 단일 응답을 설계하자.)

//❌ bad
app.get(('/', (req, res) => {
	res.sendFile('./index.html');
	res.send('response test');
	res.json({key : 'value'});
});

//✅ Good
app.get(('/', (req, res) => {
	res.send('response test');
});

참고자료