자바스크립트를 허용해주세요.
[ 자바스크립트 활성화 방법 ]
from Mohon Aktifkan Javascript!
 

[Express] 3장 - 미들웨어 적용

728x90

✅ Express 미들웨어(MiddleWare)란?

Expresds에서 미들웨어는 요청(req)응답(res) 사이에서 실행되는 함수로 요청을 가로채 전처리/후처리 역할을 담당합니다. 미들웨어는 next()를 호출하면 다음 미들웨어로 이동하고 호출하지 않으면 요청 처리가 멈춥니다.

app.use((req, res, next) => {
  console.log("MiddleWare Start!");
  next(); // 다음 미들웨어로 이동
});

express.json()

express.json은 요청의 JSON 형식 Body를 파싱하는 내장 미들웨어로 POST/PUT 요청 시, req.body에 파싱된 객체가 생성됩니다, 이전에는 body-parser 모듈을 사용했으나, Express 4.16.0부터는 내장되었습니다.

app.use(express.json());

app.post("/user", (req, res) => {
  console.log(req.body); // JSON 파싱된 데이터
  res.send("JSON 데이터 받음");
});

3.express.urlencoded()

HTML form 데이터(application/x-www-form-urlencoded)를 파싱하며 주로 form 태그로 보내는 데이터를 처리하는 역할을 담당합니다.

app.use(express.urlencoded({ extended: true }));

app.post("/form", (req, res) => {
  console.log(req.body); // { name: "James", age: "20"}
  res.send("From 데이터 받음");
});

✅ 4. 내장 미들웨어 (Built-in Middleware)

Express가 기본 제공하는 미들웨어로 다음과 같은 내장 미들웨어 종류가 있습니다.

  • express.static(root) -> 정적 미들웨어 제공
  • express.json() -> JSON 파싱
  • express.urlencoded() ->  URL-encoded 데이터 파싱
// public 폴더 파일을 / 로 제공
app.use(express.static("public"));

✅ 5. 커스텀 미들웨어 (Custom Middleware)

커스텀 미들웨어는 직접 미들웨어를 정의합니다. 

const myLogger = (req, res, next) => {
  console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
  next(); // 다음 미들웨어로 이동
};

app.use(myLogger);

✅ 6. 전체 예시

const express = require("express");
const app = express();

// 내장 미들웨어 적용
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(express.static("public"));

// 커스텀 미들웨어
app.use((req, res, next) => {
  console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
  next();
});

// 라우터
app.post("/user", (req, res) => {
  res.json({ message: "JSON 데이터 받음", data: req.body });
});

app.post("/form", (req, res) => {
  res.json({ message: "폼 데이터 받음", data: req.body });
});

// 서버 실행
app.listen(3000, () => console.log(`서버 실행: http://localhost:3000`));
node server.js
  • curl로 테스트
curl -X POST http://localhost:3000/user -H "Content-Type: application/json" -d "{\"name\":\"홍길동\"}"
  • Postman / Insominia 로 테스트
    • Post: http://localhost:3000/user
    • Body -> raw -> JSON 선택
    • { "name": "홍길동" } 입력 후 엔터
  • HTML 폼으로 테스트
<form action="/form" method="POST">
  <input type="text" name="username" value="홍길동" />
  <button type="submit">전송하기</button>
</form>

 

저장 후 public 폴더에 넣고 localhost:3000/index.html로 접속합니다. 동일하게 POSTMAN이나 다른 프로그램으로 데이터를 넣고 조회할 수 있습니다.


 

 

GitHub - Koras02/express-bloging: https://thinky.tistory.com/category/Back-End/Express

https://thinky.tistory.com/category/Back-End/Express - Koras02/express-bloging

github.com

 

728x90
LIST

'Back-End > Express' 카테고리의 다른 글

[Express] 6장 라우터 분리  (0) 2025.09.06
[Express] 5장 에러 처리  (1) 2025.08.22
[Express] 4장 정적 파일 제공  (4) 2025.08.16
[Express] 2장 - 라우팅 구현  (4) 2025.08.11
[Express] 1장 Express란 무엇인가  (3) 2025.08.10