[Node.js] Express

허북이_·2022년 8월 16일
0

Nodejs

목록 보기
1/2
post-thumbnail

Express

바닐라 Node.js에서 편리함과 효율을 더 끌어올린 프레임워크로 직관적인 코드를 작성 할 수 있습니다.

미들웨어

미들웨어는 요청에 필요한 기능을 더하거나 에러 처리 등의 역학을 합니다. 미들웨어는 Express의 가장 큰 장점이라고 할 수 있습니다.

자주 사용하는 미들웨어

미들웨어가 사용되는 상황은 다음과 같습니다.

  1. POST 요청 등에 포함된 body를 구조화할 때(쉽게 얻어내고자 할 때)
  2. 모든 요청/응답에 CORS 헤더를 붙여야 할 때
  3. 모든 요청에 대해 url이나 메서드를 확인할 때
  4. 요청 헤더에 사용자 인증 정보가 담겨있는지 확인할 때

Case 1

Express 버전이 14.6 이전인 경우에는 body-parser 미들웨어를 사용하여 다음과 같이 요청 바디를 구조화 할 수 있습니다.

const bodyParser = require('body-parser');
const jsonParser = bodyParser.json();

// 생략
app.post('/users', jsonParser, function (req, res) {

})

Express 버전이 14.6 이상인 경우에는 따로 body-parser을 설치 할 필요없이, Express 내장 미들웨어인 express.json() 을 사용합니다.

const jsonParser = express.json();

// 생략
app.post('/api/users', jsonParser, function (req, res) {

})

Case 2

cors 미들웨어를 사용하여 cors 설정을 해줄 수 있습니다

const cors = require('cors');

// 생략
app.use(cors());

Case 3

app.use() 를 사용하여 모든 요청에 대해 동일한 미들웨어를 적용 할 수있습니다.

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

const myLogger = function (req, res, next) {
  console.log('LOGGED');
  next();
};

app.use(myLogger);

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

app.listen(3000);

Case 4

app.use((req, res, next) => {
  // 토큰이 있는지 확인, 없으면 받아줄 수 없음.
  if(req.headers.token){
    req.isLoggedIn = true;
    next();
  } else {
    res.status(400).send('invalid user')
  }
})
profile
인간 거북이 허북이

0개의 댓글