Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- css
- docker
- Express
- node.js
- MongoDB
- TypeScript
- typeorm
- linux
- OS
- OOAD
- ubuntu
- macos
- mongoose
- sequelize
- HTML
- Crawling
- Kotlin
- wireshark
- python
- postman
- AWS
- React
- Network
- Util
- DATABASE
- Android
- Scheduling
- mysql
- S3
- algorithm
Archives
- Today
- Total
Seongwon Lim
[node.js] 미들웨어(MiddleWare)란 무엇일까? 본문
반응형
미들웨어(MiddleWare)?
미들웨어는 양 쪽을 연결하여 데이터를 주고 받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어, 네트워크를 통해서 연결된 여러 개의 컴퓨터에 있는 많은 프로세스들에게 어떤 서비스를 사용할 수 있도록 연결해 주는 소프트웨어를 말한다.
- 쉽게 생각하면 미들웨어는 클라이언트로부터 요청이 오고, 해당 요청을 다시 응답으로 보내기 위해 목적에 맞게 작성된 함수들의 연속이라고 생각할 수 있다.
- app.use() 를 통해서 미들웨어를 정의할 수 있다.
- 미들웨어는 본인의 함수가 끝나면 next()를 통해서 다음 함수를 호출해야 한다.
미들웨어의 특징
- 각 미들웨어에 정의된 코드를 실행한다.
- 다음 미들웨어를 순차적으로 실행한다.
- res.send() 등의 메서드를 이용하여 클라이언트와 서버간 Request-Response 주기를 종료한다.
- 이전 미들웨어에서 정의한 프로퍼티를 다음 미들웨어로 넘겨줄 수 있다.
미들웨어 구성 방법
미들웨어를 간단하게 구성해보자.
const logger = (req, res, next) => {
console.log("I'am Logger");
next(); // 해당 명령어가 존재해야 한다.
}
app.use(logger); // 미들웨어 정의
app.listen(3000, () => {
console.log("Server is running!");
})
- 해당 코드로 실행하면 터미널에 Server is running 콘솔 로그가 찍히며 서버가 실행된다.
- 그리고 http://localhost:3000 으로 접속하면 콘솔에 I'am Logger가 찍힌다.
- 홈페이지에서 접속하기 귀찮은 경우 터미널 명령어로 curl http://localhost:3000 해도 무방하다.
미들웨어 실행 순서는 어떻게 될까?
const logger = (req, res, next) => {
console.log("I'am Logger");
next();
}
const logger2 = (req, res, next) => {
console.log("Second Logger");
next();
}
app.use(logger);
app.use(logger2);
위와 같이 2개의 미들웨어가 존재하는 경우 실행 순서는 logger ⇒ logger2 순서대로 실행이 된다.
logger 미들웨어에서 next()가 없으면 logger2 미들웨어가 실행되지 않는다.
즉, next() 함수는 다음 미들웨어를 실행시키기 위해 사용되는 함수이다.
Third Party MiddleWare
- 다른 사람이 만들어놓은 미들 웨어를 사용할 수 있다.
- https://www.npmjs.com/ 에서 찾아 사용할 수 있다.
- 예시로 우리가 많이 사용하는 body-parser, morgan 등이 써드 파티 미들웨어에 해당한다.
일반 미들웨어 vs 에러 미들웨어
- 일반 미들웨어는 파라미터를 3개 받는다.
- 에러 미들웨어는 파라미터를 4개 받는다.
const commonMiddle = (req, res, next) => {
console.log("Common Middle Ware");
next(new Error("error Occur!"));
}
const errorMiddle = (err, req, res, next) => {
console.log(err.message);
// 에러를 처리 하거나, 에러를 처리 하지 못 했으면 다음 미들 웨어로 넘겨줌
next();
}
app.use(commonMiddle);
app.use(errorMiddle);
출처
'Node.js' 카테고리의 다른 글
[node.js] Typescript에서 Bcrypt를 이용한 비밀번호 암호화 (0) | 2022.05.08 |
---|---|
[node.js] 타입스크립트 파일을 컴파일 후 자바스크립트로 실행하기 (0) | 2022.05.08 |
[node.js] Typescript 기반 라우터 적용하는 법 (0) | 2022.05.08 |
[node.js] TypeORM CRUD 예시를 통해 이해하기 (0) | 2022.05.07 |
[node.js] Typescript + TypeORM + Express를 이용하여 서버 구성하기 (0) | 2022.05.07 |
Comments