1. 미들웨어란?
모든 웹서버엔 미들웨어가 있다
본인이 만든 app.js 파일에 각종 부가적인 기능을 붙인다고 생각하면 된다.
팩토리가 서버라면 기계실은 미들웨어다.
다만, 차이점이 있다면 팩토리는 기계실을 하나만 달지만
서버는 미들웨어를 주구장창 달아버릴 수 있다는 것이다.
물론 여러가지 기능을 달아줄 순 있지만
미들웨어는 주로 요청과 응답에 대한 처리만을 담당하는 경우가 많다.
app.use(express.urlencoded({ extended: false }));
app.use(express.json());
이 두가지는 form -urlencoded라는 규격의 body데이터를 손쉽게 코드에서 사용할수 있게 도와준다.
json은 JSON이라는 규격의 데이터를 손쉽게 코드에서 사용할 수 있게 도와주는 미들웨어다.
이외에도 많지만 일단 두가지를 사용해보자
2. 미들웨어 작성
app.use((req, res, next) => {
// 필요한 코드
});
요런식으로 작성한다.
req와 res는 요청과 응답에 대한 정보가 담긴 객체이고 next가 새로보이는데 이것은 다음 스택으로 정의된 미들웨어를 호출하는 것이다.
대략 요런식이다.
요청이 오면 미들웨어에서 처리하고 그 결과를 리스폰으로 보내고
다음 미들웨어를 실행하고.... 이걸 계속 반복한다.
app.use((req, res, next) => {
console.log('첫번째 미들웨어');
next();
});
app.use((req, res, next) => {
console.log('두번째 미들웨어');
next();
});
app.use((req, res, next) => {
console.log('세번째 미들웨어');
next();
});
// print: 첫번째 미들웨어
// print: 두번째 미들웨어
// print: 세번째 미들웨어
이렇게 미들웨어가 여러개 있으면 순차적으로 실행한다.
그러나 next()가 있어야 진행하며 없으면 진행하지 않는다.
라우터는 미들웨어 기반으로 구현된 객체이므로 미들웨어와 동일한 방식으로 작동한다.
app.use(Middleware)
app.use('/api', Middleware)
app.post('/api', Middleware)
위에서부터 순서대로
모든 요청에서 미들웨어가 실행
api로 시작하는 요청에서 미들웨어를 실행
api로 시작하는 POST 요청에서 미들웨어를 실행
'Framework > Node.js' 카테고리의 다른 글
Node.js 공부정리 - Socket.io (0) | 2022.10.14 |
---|---|
Node.js 공부정리 - Layered Architecture Pattern - 001 (0) | 2022.10.14 |
Node.js 공부정리 - JWT (1) | 2022.10.08 |
Node.js 공부정리 - 쿠키와 세션 (1) | 2022.10.08 |
Node.js 공부정리 001 -시작하기 (1) | 2022.09.30 |