routes파일에 routes의 경로와 더불어서 그 요청을 처리하는 함수까지 모두 작성하였다.
이렇게 될 경우 유지보수에 어려움을 겪게 되고 너무 길어진 코드에 어디서 찾아야 할지 헷갈리기 때문에 분기점에서 나눠줄 필요가 있다.
root폴더에 controllers라는 폴더를 추가해주고 파일을 하나 생성한다.
그리고 기존의 routes 파일에 함수를 옮겨준다.
// 기존 파일
// 기존
const express = require("express");
const HttpError = require("../models/http-error");
const router = express.Router();
router.get("/:pid",(req,res,next) => {
const placeId = req.params.pid
const place = DUMMY_DATA.find((p) => {
return p.id === placeId
})
if(!place){
throw new HttpError("요청을 찾을 수 없습니다", 404)
}
res.json{{place}}
})
router.get("/:uid",(req,res,next) => {
const userId = req.params.uid
const place = DUMMY_DATA.find((p) => {
return p.id === userId
})
if(!place){
return next(
new HttpError("요청을 찾을 수 없습니다", 404)
)
}
res.json{{place}}
})
// 수정
const express = require("express");
const controllers = require("../controllers/컨트롤러파일");
const router = express.Router();
router.get("/:pid", controllers.getById);
router.get("/user/:uid", controllers.getByUserId);
module.exports = router;
// controller파일
const HttpError = require("../models/http-error");
const getById = (req,res,next) => {
const placeId = req.params.pid
const place = DUMMY_DATA.find((p) => {
return p.id === placeId
})
if(!place){
throw new HttpError("요청을 찾을 수 없습니다", 404)
}
res.json{{place}}
};
const getByUserId = (req,res,next) => {
const userId = req.params.uid
const place = DUMMY_DATA.find((p) => {
return p.id === userId
})
if(!place){
return next(
new HttpError("요청을 찾을 수 없습니다", 404)
)
}
res.json{{place}}
};
exports.getById = getById;
exports.getByUserId = getByUserId;
기존의 라우트 뒤에 함수들을 따로 빼서 컨트롤러 파일에 따로 만들어 두고 그것을 import 해오는 방식이다.
이렇게 하면 routes파일에서 어디가 오류가 났는지 확인하고 그 부분을 controllers에서 확인할 수 있다.
또한 익스텐션을 이용하면 클릭으로도 에러가 난 함수를 확인할 수 있다.
가령 /user/아이디
부분에서 에러가 났을 경우 getByUserId
를 controllers에서 검색해서 수정할 수 있다.