bit가 눈 앞에서 왔다갔다

Controller 분리 본문

대외활동/옷장 앱 Project_Clip

Controller 분리

헬린인형 2021. 10. 4. 23:45

우리 프로젝트는 MVC 패턴*을 따르고 있다. 따라서 router와 controller의 분리가 필요함.

(* Model View Controller)

 

Router는 도메인으로 요청이 들어왔을때, 클라이언트 해당 요청 연결하는 역할을 한다.

요청에 해당하는 기능을 수행하는 부분 -> Controller (콜백함수 - 컨트롤러 기능을 가짐)

router.get("/login", (req, res) => {	//"/login"이 도메인
    res.render("home/login");			// 기능 수행 - (req, res) 부터 밑 함수까지 => 컨트롤러
});

목표는 router에서 controller를 분리

 

본 프로젝트로 돌아와서,

같이 백엔드 맡은 친구가 index.js를 만들어 줬다. 내 역할은 user 컨트롤러의 함수들을 만드는 것.

파일 구조

*routes/User/index.js

var express = require('express')
var router = express.Router()
const UserController = require('../controllers/User/controller.js')	
// 2번 - 컨트롤러를 가져오기 위한 부분

// 1번
router.post('/user',UserController.createUser) // 유저 생성
router.get('/user/:id', UserController.getUser) // tokenID로 유저 정보 가져오기
router.patch('/user/:id', UserController.updateUser) // 유저 닉네임 수정 OR 유저 삭제

module.exports = router		//라우터 모듈화

(작성에 필요한 부분만 긁어옴)

router는 첫번째 코드 블럭과 같은 모양이었는데, controller를 분리해주기 위해 //1번 주석 아래와 같은 모양으로 코드를 정리한 것이다.

controllers/User 디렉토리의 controller.js에 넘어가서 createUser, getUser, updateUser를 구현하면 된다.

 

//1번을 보면 UserController.~~ 이런식으로 되어있고, UserController를 require로 controllers/User/controller.js을 사용하고 있다. 

이렇게 하면 모듈화 해서 사용하는 것으로, .을 붙임으로써 명시화 된 것이다.

(잘했어 친구야)

 

*controllers/User/controller.js

//User Controller
// 'use strict'
const createUser = () => {

};

const getUser = () => {

};

const updateUser = () => {

};

module.exports = {  //밖에서 오브젝트 사용할 수 있도록 module로 밖에 빼줌
    createUser,
    getUser,
    updateUser
}

createUser, getUser, updateUser를 구현하려고 일단 모양을 잡아 뒀다.

module.exports는 모듈화 해서 밖으로 오브젝트를 빼주는 코드이다.

오브젝트를 바깥으로 빼줘야 만든 것들을 쓸 수 있다.

오브젝트는 원래  { key : value}의 모양으로 이루어졌지만, value를 생략하면 자체적으로 key와 같은 값으로 적용한다.

그래서 사실 코드는 

createUser: createUser 이런 모양으로 되어있는 것이다.

 

글을 더 이어나가고 싶었으나.. 개발 잘 하고 있는데 블루스크린 떠서.. 일단 여기까지,, 블루스크린 개오랜만에 본다 진짜.. 왜지ㅠㅠ

 

*ref

https://www.youtube.com/watch?v=KwCjYdYv0_s&t=21s 

 

 

반응형

'대외활동 > 옷장 앱 Project_Clip' 카테고리의 다른 글

Controller  (0) 2021.10.04
API / REST  (0) 2021.10.03
RN) npm install  (0) 2021.09.04
옷장 앱 Clip  (0) 2021.09.04
Comments