[express.js] 라우터(Router)

김민재·2024년 4월 1일

express.js

목록 보기
8/39

Router란?

  • 코드의 가독성을 높이기 위해 파일을 정리하기 위한 것
  • 클라이언트의 요청 경로에 따라 이 요청을 처리할 수 있는 곳으로 기능을 전달해주는 것

ex)

app.get("/users", usersController.getUsers);
app.get("/users/:userId", usersController.getUser);
app.get("/users", usersController.getUsers);
app.get("/users/:userId", usersController.getUser);
app.post("/users", usersController.postUser);app.get("/users", usersController.getUsers);
app.get("/users/:userId", usersController.getUser);
app.post("/users", usersController.postUser);
app.post("/users", usersController.postUser);
app.get("/posts", postsController.getPost);
  • 만약 이렇게 경로를 설정하게 되면 코드의 가독성을 잃어버린다. 가독성을 높이기 위해서는 라우터를 설정해줘야한다.

Router 설정법

  1. routes 폴더를 생성하고, 각 맞는 router 파일을 생성한다.

  2. users.router.js 파일에 가서 설정했던 경로들을 다시 router 경로에 맞게 수정해줘야한다.

const express = require("express");
const usersRouter = express.Router();
// router 명시
const usersController = require("../controllers/users.contorller");
// router에서 사용할 controller

usersRouter.get("/", usersController.getUsers);
// "/" 기본으로 해놓는 이유는 app.js에서 router를 설정할 시에 
// "/users"를 넣어주기 때문이다. 

usersRouter.get("/:userId", usersController.getUser);

usersRouter.post("/", usersController.postUser);

module.exports = usersRouter;
  1. 서버를 실행할 파일에 router를 호출한다.
const usersRouter = require("./routes/uesrs.router");
const postsRouter = require("./routes/posts.router");
  1. app.use 미들웨어를 이용해 라우터를 설정한다.
app.use("/users", usersRouter);
// router 기본 경로 "/users"를 통해 가는 곳은 usersRouter를 모두 통과한다.
app.use("/posts", postsRouter);
// router 기본 경로 "/posts"를 통해 가는 곳은 postsRouter를 모두 통과한다.

이런 식으로 router를 설정해주면 된다. 확실히 코드의 가독성이 좋아졌다.

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

const port = 3000;

const app = express();

app.use(express.json());

app.use((req, res, next) => {
  console.log("Time", Date.now());
  next();
});

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

app.get("/", (req, res) => {
  res.send("Hello world");
});

app.listen(port, () => {
  console.log("listening on 3000");
});
profile
개발 경험치 쌓는 곳

0개의 댓글