URL 경로에 따라 요청을 분기 처리하는 구조

Express에서는 express.Router() 를 사용해서 기능을 모듈로 분리함


🔧 예시 구조

📁 project/
├── app.js
└── routes/
    └── contactRoutes.js


🔍 app.js

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

app.use(express.json()); // 미들웨어 등록

// /contacts 경로에 대해 routes/contactRoutes.js 사용
app.use("/contacts", require("./routes/contactRoutes"));

app.listen(3000, () => {
  console.log("서버 실행 중..");
});


🔍 routes/contactRoutes.js

const express = require("express");
const router = express.Router();

// GET /contacts/
router.get("/", (req, res) => {
  res.send("연락처 목록");
});

// POST /contacts/
router.post("/", (req, res) => {
  const { name, email } = req.body;
  if (!name || !email) {
    return res.status(400).send("필수 항목 누락");
  }
  res.send("연락처 등록 완료");
});

// GET /contacts/:id
router.get("/:id", (req, res) => {
  res.send(`${req.params.id}번 연락처 조회`);
});

module.exports = router;


간단 비교

개념 미들웨어 라우터
목적 요청/응답 사이에서 가공 또는 검사 수행 URL 경로에 따라 요청을 분기
사용 위치 app.use() 또는 router.use() app.get(), router.post() 등으로 정의
예시 로그인 검사, 로그 기록, body 파싱 등 /contacts, /users/:id 등 처리
흐름 제어 next()를 호출해야 다음 미들웨어로 이동 내부에서 응답 (res.send) 처리 후 종료 가능