[Express] 컨트롤러 추가하기

적자생존·2023년 1월 1일
0

Node

목록 보기
7/17

1. routes파일에는 경로만 존재하면 편하다

routes파일에 routes의 경로와 더불어서 그 요청을 처리하는 함수까지 모두 작성하였다.

이렇게 될 경우 유지보수에 어려움을 겪게 되고 너무 길어진 코드에 어디서 찾아야 할지 헷갈리기 때문에 분기점에서 나눠줄 필요가 있다.

2. 컨트롤러 추가하기

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에서 검색해서 수정할 수 있다.

profile
적는 자만이 생존한다.

0개의 댓글