반응형
    
    
    
  Middleware란 Request와 Response의 중간에 위치하며 여러 가지 행위(Request 및 Response 조작, Request Drop)를 할 수 있습니다.
Node.js에서는 여러 가지 방법이 있을 수 있지만, app.use를 이용한 기본적인 방법에 대하여 포스팅 하도록 하겠습니다.
예제 환경 구성하기
1. 저는 NestJS(Node.js 기반)를 이용하여 예제 환경을 구성하였는데요. 아래의 명령어를 통하여 설치 가능합니다.
$ npm i -g @nestjs/cli
$ nest new project-name2. 소스 코드 수정 후 아래의 명령어를 이용하여 애플리케이션을 실행할 수 있습니다.
$ npm run start
Middleware (미들웨어)
Node.js에서 Middleware는 app.use를 이용하여 매우 간편하게 구현할 수 있습니다.
(.get의 경우 다른 HTTP Method로 대체될 수 있음)
- app.use(Middleware)
- app.use(Path, Middleware)
- app.get(Middleware)
- app.get(Path, Middleware)
main.ts
async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.use((req, res, next)=>{
    console.log("1");
    next();
  })
}
bootstrap();
그리고 각각의 사용 방법에 따라 Middleware가 실행되는 조건이 달라집니다.
| 구분 | 설명 | 
| app.use(Middleware) | 모든 요청에 대하여 Middleware 실행 | 
| app.use(Path, Middleware) | Path 경로로 전송된 모든 요청에 대하여 Middleware 실행 | 
| app.get(Middleware) | GET Method로 전송된 모든 요청에 대하여 Middleware 실행 | 
| app.get(Path, Middleware) | GET Method를 이용하여 Path 경로로 전송된 모든 요청에 대하여 Middleware 실행 | 
만약 아래와 같이 동일한 경로 또는 방법으로 사용된 Middleware가 존재한다면, 상단에 있는 Middleware가 먼저 실행되고 하단에 있는 Middleware가 나중에 실행됩니다.
main.ts
async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.use((req, res, next)=>{
    console.log("1");
    next();
  })
  
  app.use((req, res, next)=>{
    console.log("2")
    next()
  })
}
bootstrap();
/*
Request : GET /  
Console :
1
2
*/
그리고 next의 호출 여부에 따라 다음 Middleware 실행 여부가 결정됩니다. 아래 코드는 "/" 경로에 대한 Middleware에서 next() 함수를 호출하고 있지 않아 "GET /222"로 접근 시 Console.log에 /222가 찍히지 않습니다.
main.ts
async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.use((req, res, next)=>{
    console.log("1");
    next()
  })
  app.use((req, res, next)=>{
    console.log("2")
    next()
  })
  app.use("/",(req, res, next)=>{
    console.log("/")
  })
  app.use("/123",(req, res, next)=>{
    console.log("/123")
    next()
  })
  app.use("/222",(req, res, next)=>{
    console.log("/222")
    next()
  })
  await app.listen(3000);
}
bootstrap();
/*
Request : GET /222
Console :
1
2
/
*/반응형
    
    
    
  'Study > WEB' 카테고리의 다른 글
| TypeScript 문법 정리 (0) | 2022.10.14 | 
|---|---|
| AngularJS 시작하기 - HTTP 통신을 통한 Data 전달받기 (3/3) (0) | 2022.10.10 | 
| AngularJS 시작하기 - 웹 서버 개발 기초 (2/3) (0) | 2022.10.10 | 
| AngularJS 시작하기 - 환경 구성 (1/3) (0) | 2022.10.09 | 
| AngularJS에 대하여 알아보자 (0) | 2022.10.09 | 
 
														
													 
														
													 
														
													 
														
													
댓글