Node.js_3. Express.js

Seoyong Lee·2021년 5월 29일
0

Node.js

목록 보기
3/3
post-thumbnail

Express 프레임워크

Expres.js 혹은 Express는 Node.js 를 위한 프레임워크로 사실상 표준 서버 프레임워크로 불리고 있다. Express를 사용하면 미들웨어(middleware)를 이용해 쉽게 서버를 구성할 수 있다는 장점이 있다.

자주 사용하는 Express의 미들웨어는 다음과 같다.

미들웨어

미들웨어는 Express 자체 미들웨어와 서드파티 미들웨어로 나누어진다. 다음은 공식문서에서 소개하는 자체 미들웨어를 사용한 간단한 코드이다.

const express = require('express');
const app = express();

// 메소드 ('라우트', (요청, 응답, 콜백) => {})
app.get('/', (req, res, next) => {
  res.send('Hello World!');
});

app.listen(3000);

메소드와 라우트 경로, 요청과 응답을 한 번에 처리하므로 기존 createServer에 비해 조금 더 간결해졌다. 같은 코드를 순수 Node.js로 작성하면 다음과 같다.

const http = require('http');

const server = http.createServer((req, res) => {
  if (req.method === 'GET') {
    res.end('Hello World!');
  }
});
                                 
server.listen(3000);

createServer와 미들웨어의 차이점은 바로 콜백 파라미터 next로 이를 사용하면 다음과 같이 GET등의 메소드 함수의 실행 전에 app.use로 지정한 기능을 동작시킬 수 있다. 이는 주로 404, 500 에러 등을 설정하기 위해 사용하며, try ...catch가 모든 메소드에 에러처리를 작성해야 하는 것과 달리 한 번의 작성으로 반복적인 로직 처리를 수행할 수 있다는 장점이 있다.

app.get('/', (req, res) => {
  res.status(200).send("GET 요청!");
});

app.post('/', (req, res) => {
  const list = req.body
  res.status(200).json(list);
});


app.use((req, res, next) => {
  res.status(404).send('Not Found!');
});

// try ...catch 사용시

app.get('/', (req, res) => {
  try{
    res.status(200).send("GET 요청!");
  } catch(err) {
  	res.status(404).send('Not Found!' + err);
  }
});

app.post('/', (req, res) => {
  try{
    const list = req.body
    res.status(200).json(list);
  } catch(err) {
  	res.status(404).send('Not Found!' + err);
  }
});

이러한 방식이 다음과 같이 에러를 따로 정리하는 것과 별반 차이가 없다고 생각할 수 있다.

function err() {
  res.status(404).send('Not Found!');
}

그러나 이러한 방식은 Express의 영역 안에서 관리되는 방식이 아니므로, 되도록이면 app.use를 이용해 에러처리를 하는것이 추천된다.

서드파티 미들웨어

cors

대표적인 서드파티 미들웨어는 cors 미들웨어로 다음을 통해 설치할 수 있다.

$ npm install cors

cors 미들웨어를 이용하면 cors 조작을 다음을 통해 편하게 할 수 있다.

const express = require('express');
const app = express();
const cors = require('cors')

// 모든 요청에 대해 CORS 허용
app.use(cors()) 

// 특정 요청에 대해 CORS 허용
app.get('/products/:id', cors(), function (req, res, next) {
  res.json({msg: 'This is CORS-enabled for a Single Route'})
})

body-parser

다음으로 자주 쓰이는 미들웨어는 body-parser로 req로 받은 요청을 파싱하는 역할을 한다. Express 4.0 버전에서 빌트인 되어 현재 별도의 설치 없이 사용이 가능하다.

const express = require('express');
const app = express();
// 추가
app.use(express().json()); //json 형태로 parsing
app.use(express.urlencoded( {extended : false } )); 

app.post('/',function(req,res){
	let post = req.body;
	console.log(post)
})

참고
expressjs.com
위키백과 - Express.js

profile
코드를 디자인하다

0개의 댓글