미들웨어에 대해서

김건호·2021년 10월 8일
0
post-custom-banner

미들웨어 : 익스프레스가 실행되면서 리퀘스트 왔을 때 응답이 되어 나갈때까지 거치는 모든 함수

nodemon 코드 변경 시 자동으로 변경사항을 실행시켜주는 패키지

npm install —save-dev nodemon 설치 후,

패키지.json에 추가

"scripts": {
    "server": "nodemon src/main.js"
  },
  "engines": {
    
    "node": "v14.17.4"
  },

사용 명령어 npm run server

노드 비동기 : 언제 어ᄄᅠᆫ작업이 끝날지 모름 -> 명시적으로 알려줘야함
미들웨어 받는 인자 정해짐 : req, res, next(다음 미들웨어에 실행을 넘기기 위해)

// @ts-check
/* eslint-disable no-console */
const  express  = require ('express')

const  app  = express () // 익스프레스 객체 만들기

const  PORT  = 5000

app .use ('/',(req , res , next ) => {
    console .log ('Middleware 1')
    const  requestedAt  = new  Date () // 어떤 시점에 요청을 보냈는 지
    // @ts-ignore
    req .requestedAt  = requestedAt
    next ()
    // console.log('Middleware 1-1')

    // setTimeout(() => {
    //   // 비동기적으로 next 불리는 시나리오
    //   next() // 실행되지 않으면 미들웨어 끝난지 모름
    // }, 1000)
  }
  //   (req, res, next) => {
  //     // 바로 다음 함수로 붙이는거 가능
  //     console.log('middware 1-2')
  //     next()
  //   }
)

/* 수많은 middleware들... */

app .use ((req , res ) => {
  console .log ('Middleware 2')
  // @ts-ignore
  res .send (`Hello, express!: Requested at ${req .requestedAt }`)
})

app .listen (PORT , () => {
  console .log (`The Express server is listening at port : ${PORT }`)
}) // 어느 포트에서 들을지

async 와 await

const  fs  = require ('fs')

const  app  = express () // 익스프레스 객체 만들기

const  PORT  = 5000

app .use ('/', async  (req , res , next ) => {
  console .log ('Middleware 1')

  const  fileContent  = await  fs .promises .readFile ('.prettierrc')

  const  requestedAt  = new  Date () // 어떤 시점에 요청을 보냈는 지
  // @ts-ignore
  req .requestedAt  = requestedAt
  // @ts-ignore
  req .fileContent  = fileContent
  next ()
})
profile
Ken, 🔽🔽 거노밥 유튜브(house icon) 🔽🔽
post-custom-banner

0개의 댓글