컨트롤러에 대해 이해하기

yujin·2023년 11월 21일
0

TIL

목록 보기
15/48
post-thumbnail
post-custom-banner

컨트롤러에 대해 이해하기


1. 컨트롤러란?

컨트롤러는 MVC(Model-View-Controller) 패턴에서 중요한 역할을 하는 구성 요소이다.
웹 애플리케이션에서 들어오는 요청을 처리하고, 그에 따른 적절한 응답을 생성하는 역할을 한다. 이는 데이터베이스에서 데이터를 조회하는 작업부터 사용자에게 보여줄 뷰를 선택하고 렌더링하는 작업까지 다양하게 포함될 수 있다.

2. 컨트롤러의 장점

  • 코드의 재사용성
    컨트롤러는 특정 요청을 처리하는 로직을 모듈화하여 재사용성을 높인다. 같은 로직을 여러 곳에서 사용해야 할 경우 컨트롤러를 통해 중복 코드를 줄일 수 있다.
  • 코드의 가독성 및 유지보수성
    로직을 컨트롤러로 분리하면 각 컨트롤러가 어떤 역할을 하는지, 어떤 요청을 처리하는지 명확하게 파악할 수 있다. 이는 코드의 가독성을 높이며, 유지보수를 용이하게 한다.
  • 테스트 용이성
    컨트롤러를 모듈화하면 각 컨트롤러 함수를 별도로 테스트할 수 있다. 이는 단위 테스트를 수행하기 용이하게 만든다.

3. 컨트롤러의 단점

  • 복잡성 증가
    컨트롤러가 많아지거나, 컨트롤러 내부의 로직이 복잡해질 경우, 전체적인 코드의 복잡성이 증가할 수 있다. 이를 해결하기 위해 컨트롤러의 기능을 적절히 분리하고, 각 컨트롤러의 역할을 명확히 하는 것이 중요하다.

4. 컨트롤러 작성 예시

  • Express.js에서 컨트롤러를 작성하는 예시
const User = require('../models/User');

exports.getAllUsers = async (req, res, next) => {
  const users = await User.findAll();
  res.json(users);
};

exports.createUser = async (req, res, next) => {
  const newUser = await User.create(req.body);
  res.json(newUser);
};
// ...기타 컨트롤러 함수
  • 라우터에 적용한 예시
const express = require('express');
const router = express.Router();
const userController = require('./controllers/userController');

router.get('/users', userController.getAllUsers);
router.post('/users', userController.createUser);
// ...기타 라우트 설정

module.exports = router;

5. etc

저번 개인 과제 때 확인만 하고 적용시켜보지 못했던 컨트롤러에 대한 TIL이다.
개인적으로 코드를 잘게 나눠서 모듈화 시키는 걸 매우 좋아하는만큼 이번 프로젝트에 적용 시킬 예정.

profile
고통 받는 코딩일기
post-custom-banner

0개의 댓글