express.Router를 이용하여 파일 관리

sangyong park·2023년 3월 9일
0

router를 이용해서 post 폴더별로 관리


개발을 하다보면 늘어나는 api 규칙들을 하나의 파일에서 관리하게 되면 유지보수에도 불합리 하기 때문에 express.Router 를 이용해서 폴더별로 관리해준다.

express 공식문서

Router 폴더 생성

Router라는 폴더를 생성하고 파일을 생성한다. 나는 post 에 관련 된 파일을 만들 것이기 때문에 post.js 라고 생성하였다.

생성한 파일에 아래의 두 가지를 import 해주고 router를 모듈로써 export 해준다.

<script>
const express = require('express')
const router = express.Router()

module.exports = router
</script>

그리고 index.js 에 있는 app.post 에 관련된 코드들을 post.js 에 들고 와주고 app 부분을 router 로 바꿔준다. 또한 데이터베이스에서 사용하는 Model에 관한 코드도 들고와서 넣어준다.

<script>
const express = require('express')
const router = express.Router()

const { Post } = require("./Model/Post");
const { Counter } = require("./Model/Couter");

router.post("/api/post/submit", (req, res) => {
    Counter.findOne({ name: "counter" })
      .exec()
      .then((counter) => {
        req.body.postNum = counter.postNum;
        const CommunityPost = new Post(req.body);
        CommunityPost.save().then(() => {
          Counter.updateOne({ name: "counter" }, { $inc: { postNum: 1 } }).then(
            () => {
              console.log(req.body);
              res.status(200).json({ success: true });
            }
          );
        });
      })
      .catch(() => {
        res.status(400).json({ success: false });
      });
  });
  
  router.post("/api/post/list", (req, res) => {
    Post.find()
      .exec()
      .then((doc) => {
        res.status(200).json({ success: true, postList: doc });
      })
      .catch(() => {
        res.status(400).json({ success: false });
      });
  });
  
  router.post("/api/post/delete", (req, res) => {
    Post.deleteOne({ postNum: Number(req.body.postNum) })
      .exec()
      .then(() => {
        Post.find()
          .exec()
          .then((doc) => {
            res.status(200).json({ success: true, postList: doc });
          });
      })
      .catch(() => {
        res.status(400).json({ success: false });
      });
  });
  
  router.post("/api/post/edit", (req, res) => {
    let temp = {
      author: req.body.author,
      content: req.body.content,
    };
    Post.updateOne({ postNum: Number(req.body.postNum) }, { $set: temp })
      .exec()
      .then(() => {
        Post.find()
          .exec()
          .then((doc) => {
            res.status(200).json({ success: true, postList: doc });
          });
      })
      .catch(() => {
        res.status(400).json({ success: false });
      });
  });

module.exports = router
</script>

server > index.js
이제 서버의 index.js 파일에서 아까 만든 라우터를 app.use 를 이용하여 import 해준다. 첫번째 주소 입력하는 곳에 router들의 공통된 주소를 아래와 같이 넣어주면 router에서 /api/post/edit 이 아닌 /edit 만을 주소로 사용할 수 있게 된다.

<script>
// 첫번째 요소에는 사용할 api 주소를 넣어준다.
app.use("/api/post", require("./Router/post"));
</script>
profile
Dreams don't run away It is always myself who runs away.

0개의 댓글