미들웨어 : 익스프레스가 실행되면서 리퀘스트 왔을 때 응답이 되어 나갈때까지 거치는 모든 함수
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 }`)
}) // 어느 포트에서 들을지
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 ()
})