deVSner

express - 미들웨어 기초 본문

개발 일지/node.js (with express)

express - 미들웨어 기초

RudeofSun 2020. 6. 22. 11:41

1. express 미들웨어

express가 담긴

index.js

 

크게 몇몇개의 부분으로 나눌 수 있겠다.

 

첫 번쨰는, 모듈을 불러오는 부분

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

 

두 번째는, 해당 모듈을 use함수로 호출하는 부분

app.use(logger); 

 

세 번째는, 첫 번째와 두 번째에 사용될 함수를 작성하는 부분.

function logger( req, res, next) {  
  console.log('i am logger');
  next(); 
}

 

실제 index.js 내에서는 첫 번째 -> 세 번째 -> 두 번째의 순서로 코드가 작성되어 있다.

구조를 이해하다보니 이 순서가 나을 거 같았다.

 

express에는 '기능'을 추가하기 위해서는 '미들웨어'를 추가해야 한다.

logger함수를 만드는 것인데, 매개변수로는 3가지가 있다. 패턴이라고 보면 된다. (나중에는 에러 매개변수도 추가 예정)

 

req

res

next

를 차례대로 입력한다.

req는 프론트 서버에서 날라오는 요청이다.

res는 백엔드 서버에서 프론트로 보낼 응답이다.

next는 다음 미들웨어로 로직을 이동시키는 거라고 보면 되겠다. 없으면 거기서 끝나버린다.

 

 

2. npm 모듈을 직접 설치 및 사용해 보기

npm 사이트에서는 각종 모듈을 제공한다. 다른 개발자가 만든 미들웨어를 내가 사용할 수 있게, 일목요연하게 정리가 되어있다. ^^ 베뤼그읃

여기선 morgan을 예로 들겠다.

 

터미널에 아래 명령어를 작성한다.

npm i morgan

설치를 했으면 express 코드가 있는 index.js에서 (모건을 사용할 js파일에서)

모건을 불러와야 한다. 설치가 끝이 아니다.

 

아래처럼 불러온다.

const morgan = require('morgan')

불러왔으면, 

사용을 해야 한다.

app.use(morgan(XXX))

morgan의 경우, 미들웨어가 만들어져 있기 떄문에 해당 로직은 작성하지 않았다. 그러니까 설치하는 과정을 거친 것이다 ㅎㅎ아자!

 

위에 보면 XXX라고 되어있는 것은, npm morgan 페이지를 상세히 봐야 한다.

dev도 들어갈 수 있고 tiny도 들어갈 수 있다.

 

 

3. err 처리하기

에러가 발생할 경우에 대해 반드시 에러 로직을 구성해야 한다.

function errorMessage (req, res, next) {
 console.log('에러 미들웨어')
 next(new Error('에러가 발생했어')
}

function errorOcurred (err, req, res, next) {
  console.log(err.message);
  next(err)
}

두 개의 미들웨어 함수가 있다.

에러 메세지 미들웨어에서 에러를 발생시켰고, 이거를 다음 미들웨어에 전달했다.

다음 미들웨어인, 에러 발생 미들웨어에서는

콘솔로그로 '에러가 발생했어'가 찍힌다.

만약, 또 다음 미들웨어로 에러를 넘기고 싶다면, next함수에 err를 넣어서 넘겨주면 된다

에러를 처리하려면, 에러 발생 미들웨어 함수 내에서 처리를 하면 된다.