express의 미들웨어는 요청과 응답 사이에 위치한 함수로, 주로 요청을 처리하거나. 응답을 수정하는 작업을 합니다.
각 미들웨어는 요청을 처리하고, next()를 호출하여 다음 미들웨어로 넘길지, 응답을 보낼지 결정할 수 있습니다.
- 미들웨어는 app.use()로 설정합니다.
- 요청이 들어오면 순차적으로 실행되며, 각각의 미들웨어가 요청을 수정하거나 처리합니다.
1. morgan("dev")
app.use(morgan("dev"));
기능
- morgan은 HTTP 요청에 대한 로깅을 처리하는 미들웨어입니다.
dev는 로깅 형식중 하나로, 개발환경에서 요청 URL, HTTP상태 코드, 응답시간을 콘솔에 출력합니다.
사용하는 이유
- 요청과 상태를 쉽게 추적하기위해 사용되며, 요청이 서버에 들어올 때마다 콘솔에 로그가 찍혀 확인할 수 있습니다.
morgan은 단순히 요청을 로그로 보여주며 next()를 호출하지 않아도 다음 미들웨어로 넘어갑니다.
2. express.static()
기능
- 정적 파일 제공,
- 이 미들웨어는 정적파일(HTML, CSS, 이미지, JavaScript 파일)을 제공하는 미들웨어입니다.
- 서버에서 제공할 파일들이 특정 폴더에 있을 때, 해당 파일들을 URL 경로에 맞게 자동으로 제공해줍니다.
app.use(express.static(path.join(__dirname, "public")));
( __dirname : 현재 파일의 디렉토리를 의미)
path.join을 통해 디렉토리 안의 public 폴더를 지정하며, 폴더안의 파일을 클라이언트(브라우저)에게 제공할 수 있게 합니다.
3. express.json()
app.use(express.json());
기능
- json 데이터를 파싱하는 미들웨어입니다.
클라이언트에서 JSON 형식으로 데이터를 전송하면, JavaScript 객체로 변환하여 req.body에 저장합니다.
요청 본문에 JSON 데이터가 있으면 파싱하고, next()를 호출하여 다음 미들웨어로 넘어갑니다.
(직접호출 하지 않아도 자동으로. 호출됨)
4. express.urlencoded({extended: boolean})
app.use(express.urlencoded({ extended: false }));
기능
- URL 인코딩 된 폼 데이터를 파싱하는 미들웨어입니다.
false 옵션은 querystring 라이브러리를 사용하여 데이터를 처리합니다. 중첩된 객체나 복잡한 구조는 처리하지 않으며, 일반적인 폼 데이터는 파싱합니다.
(직접호출 하지 않아도 자동으로. 호출됨)
HTML 폼을 통해 전송된 데이터를 처리하기 위해 사용하며 사용자가 제출한 폼 데이터를 req.body에서 확인할 수 있습니다.
express 에서는 미들웨어가 위에서 아래로 순차적으로 실행됩니다. 각 미들웨어가 요청을 처리하거나, 요청을 수정하거나, 응답을 보내며, 그 후 next()가 호출되면 다음 미들웨어로 넘어갑니다.
단, 정적 파일을 제공하거나 응답을 완료한 미들웨어는 더 이상 다음 미들웨어로 넘어가지 않습니다.
그렇기에 미들웨어의 순서는 매우 중요합니다.
'Node js' 카테고리의 다른 글
파일 업로드 처리 (Multer) (0) | 2025.02.17 |
---|---|
passport.js 정리하기 (0) | 2025.02.14 |
mongoDB 에 대하여 (1) | 2025.01.25 |
2. 노드의 특성 (0) | 2025.01.07 |
1. Node.js 란? (0) | 2025.01.07 |