본문 바로가기
junior developer :)/Node.js

[Node.js] 미들웨어란??( + 미들웨어 모듈)

by ㅁ윤슬ㅁ 2022. 10. 18.
728x90
반응형

미들웨어란? 서로 다른 어플리케이션이 서로 데이터를 주고 받을 수 있도록 중간에 사용하는 소프트웨어
미들웨어 함수는 요청오브젝트(req), 응답오브젝트(res), 그리고 애플리케이션의 요청-응답 주기 중 그 다음의 미들웨어 함수에 대한 엑세스 권한을 갖는 함수이며 그 다음의 미들웨어 함수는 일반적으로 next라는 이름의 변수로 표시된다

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

미들웨어 함수 호출의 요소


현재의 미들웨어 함수가 요청 - 응답 주기를 종료하지 않는 경우에는 next()를 호출하여 다음 미들웨어 함수에 제어를 전달해야 한다
(다음 미들웨어 함수가 없으면 생략 가능)

ERROR

보통 미들웨어 형식은 이렇게 되어 있지만. error 미들웨어 같은 경우는 인자가 4개가 들어가야 한다
next()함수도 사용하지 않아도 넣어줘야 함(하나라도 생략되면 일반 미들웨어로 인식된다)

app.use(function(err, req, res, next) {
	console.error(err.stack)
    res.status(500).send("ERROR!")
})

미들웨어를 적용하기 위해서는 express의 메소드를 사용한다(app.use 등..)
 이 부분은 곧 다시 정리해서 포스팅 하려고 한다

express는 자체적인 최소한의 기능을 갖춘 라우팅 및 미들웨어 웹 프레임워크이며, Express 애플리케이션은 기본적으로 일련의 미들웨어 함수 호출이다.

미들웨어의 모듈

대표적으로 3가지만 보자면

- body-parser : HTTP 요청 body를 파싱한다. body 데이터를 읽기 위해 사용
- cors : 다양한 옵션들을 이용하여 Cross-origin resource Sharing(CORS)를 활성화.
              즉, CORS문제를 해결하기 위해 사용하는 모듈( 작성 시 응답에 Access-Control-Allow-Origin 헤더가 자동으로 추가됨)
- morgan : 요청과 응답에 대한 정보를 콘솔에 기록한다

 


참고

https://expressjs.com/ko/guide/using-middleware.html

https://inpa.tistory.com/m/entry/EXPRESS-📚-미들웨어-💯-이해-정리 

 

728x90
반응형