[Node.js] Express 서버 만들기 1 - 미들웨어

jungeundelilahLEE·2021년 2월 9일
0

Node.js

목록 보기
24/27

goal

  • 미들웨어에 대해서 알아보자

MiddleWare 미들웨어

  • Express 프레임워크의 핵심개념
  • 요청과 응답의 중간에 있어서 붙여진 이름이라더라
  • 요청과 응답을 조작해서, 기능을 추가하거나 bad request를 핸들하는 등의 기능을 수행한다.
  • 주로 app.use와 함께 사용한다.
  • app.js 파일을 보면, app.use( 여기! - 인자로 들어있는 함수가 미들웨어이다 )
  • use 메소드를 통해서 app에 장착한다.
  • 순서대로 미들웨어를 거친 후에, 라우터에서 클라이언트로 응답을 보낸다.
// 요청이 들어가면
// 아래 미들웨어를 순차적으로 거친 후
	app.use(logger('dev'));
	app.use(express.json());
	app.use(express.urlencoded({ extended: false }));
	app.use(cookieParser());
	app.use(express.static(path.join(__dirname, 'public')));
	// 라우터
	app.use('/', indexRouter);
	app.use('/users', usersRouter);
	// 404 처리 미들웨어
	app.use(function(req, res, next) {
      	  // 참고) next를 호출하지 않으면, 다음 미들웨어로 넘어가지 않는다.
	  next(createError(404));
	});
	// 에러 핸들러
	app.use(function(err, req, res, next) {
	  res.locals.message = err.message;
	  res.locals.error = req.app.get('env') === 'development' ? err : {};
	  res.status(err.status || 500);
	  res.render('error');
	});
// 응답한다

body-parser 미들웨어

const bodyParser = require("body-parser") 
// 4.16.0버전부터 일부기능 내장됨
// node.js body를 파싱하는 미들웨어 
// 요청의 본문을 해석해주는 미들웨어
// 보통, form 데이터나, ajax 요청의 데이터를 처리한다.
// 다음과 같이 사용한다
// const bodyParser = require("body-parser")
// app.use(bodyParser.json())
// app.use(bodyParser.urlencoded({extended:false}))
// 멀티의 바디들을 핸들해주지는 않는다.

cors 미들웨어

  • node.js 코드로 CORS 헤더를 붙이려면, 응답 객체의 writeHead 메소드 등을 이용해 일일이 Access-Control-Allow-* 헤더를 정의 및 OPTIONS 메소드에 대한 라우팅도 구현해줘야 했다.
const cors = require("cors")
// 다음과 같이 사용

// 아래는, 모든 요청에 대해 cors 를 허용한다.
app.use(cors())

// 아래는, 특정 요청에 대해서만 cors 를 허용한다.
// use 메소드로 쓰지 않고 특정 라우터에 붙인다.
app.get("/id", cors(), (req, res, next) => {})

profile
delilah's journey

0개의 댓글