Router 이용하기

애플리케이션이 점점 커질수록 server.js 파일에 api들이 많아져서 복잡해지게 됩니다.

이럴 때 router를 이용하면 이 부분을 정리해줄 수 있습니다.

Router 란

클라이언트의 요청 경로(path)에 따라 이 요청을 처리할 수 있는 곳으로 기능을 전달해주는 것이 라우터 입니다.

라우터 사용하기

스크린샷 2023-11-19 오후 9.33.17.png

Routing 을 위한 폴더 및 파일 생성

Untitled

// 1. express.Router 클래스를 이용해서 router 객체 생성
const usersRouter = express.Router();

// 2. router 객체에 middleware 함수 등록
usersRouter.get("/users", usersController.getUsers);
usersRouter.get("/user/:userId", usersController.getUser);
usersRouter.post("/users", usersController.postUser);

// 3. server.js 파일에 경로에 따른 router 등록하기
app.use("/users", usersRouter);

users 라우터 생성하기

// routes/users.router.js

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

const usersController = require("../controllers/users.controller");

router.get("/", usersController.getUsers);
router.get("/:userId", usersController.getUser);
router.post("/", usersController.postUser);

module.exports = router;
// server.js

const usersRouter = require("./routes/users.router");

app.use("/users", usersRouter);

posts 라우터 생성하기

// routes/posts.router.js

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

const postsController = require("../controllers/posts.controller");

router.get("/", postsController.getPost);

module.exports = router;
// server.js

const usersRouter = require("./routes/users.router");
const postsRouter = require("./routes/posts.router");

app.use("/users", usersRouter);
app.use("/posts", postsRouter);

req.baseUrl

https://expressjs.com/en/5x/api.html#req.baseUrl

현재 요청에 대한 로그를 보면 이런 식으로 나오는 것을 볼 수 있습니다.

Untitled

app.use((req, res, next) => {
  const start = Date.now();
  console.log(`${req.method} ${req.url}`);
  next();

  const diffTime = Date.now() - start;
  console.log(`${req.method} ${req.baseUrl}${req.url} ${diffTime}ms`);
  // 메인 task를 처리한 뒤, next() 뒷 부분을 호출합니다.
});