[express] route-controller-model 구조 적용

YTT.erica·2024년 5월 14일

route-controller-model

route-controller-model이란

  • route란, 네트워크에서 통신 데이터를 보낼 경로를 의미
    적절한 controller로 전달하는 기능을 한다

  • controller란, 사용자가 요청한 웹 페이지를 서비스하기 위해 모델을 호출하는 것이다.
    모델에서 요청된 데이터를 가져오고, 데이터를 표시하는 페이지를 만들거나, 사용자에게 보내 브라우저에서 볼 수 있게 한다.

  • model이란, 데이터베이스나 파일과 같은 데이터 소스를 제어한 후에 결과를 반환


route-controller-model 적용하기

현재 필요한 route-controller-model은 무엇이 있을까

현재 community는 게시글 작성/수정/삭제, 댓글 작성/수정/삭제, 유저 등록/수정/삭제의 기능을 한다.

해당 프로젝트에서 필요한 route, controller, model, data는 다음과 같다.

routecontrollermodeldata
유저userRouteruserControlleruserModelusers.js
게시글postRouterpostControllerpostModelposts.js
댓글commentRoutercommentControllercommentModalcomments.js
게시글이미지postImageRouter---
프로필이미지profileImageRouter---

Community 프로젝트의 Route, Controller, Model

App.js

const apiRouter = express.Router();
apiRouter.use("/users", userRouter);
apiRouter.use("/posts", postRouter);
apiRouter.use("/posts", commentRouter);
  • 유저 관련 router는 "/users" 경로 사용
  • 게시글 관련 router는 "/posts" 경로 사용
  • 댓글 관련 router는 "/posts" 경로 사용 (postId에 따라 가져오는 값이 달라져 /posts 로 설정)

User Router, User Controller

필요한 기능을 정리해보자

기능설명주소controller
GET전체 유저 정보/usersgetUsers
GET현재 로그인한 유저 정보/users/usergetUser
GET로그인/users/logInlogInUser
POST회원 가입/users/signUpaddUser
POST이메일 중복 체크/users/email/:emailduplicateEmail
POST닉네임 중복 체크/users/nickname/:nicknameduplicateNickname
POST로그아웃/users/logOutlogOut
PATCH회원정보 변경/users/user/profileupdateUserProfile
PATCH비밀번호 변경/users/user/passwordupdateUserpassword
DELETE회원 탈퇴/users/userdeleteUser
  • model은 데이터를 직접 다루는 함수로 controller에서 사용할 로직을 구현하면 된다

Post

필요한 기능을 정리해보자

기능설명주소controller
GET게시물 목록/postsgetPosts
GET게시물 상세/posts/:idgetPost
POST게시물 작성/postsaddPost
PATCH게시물 수정/posts/:idupdatePost
DELETE게시물 삭제/posts/:iddeletePost
  • model은 데이터를 직접 다루는 함수로 controller에서 사용할 로직을 구현하면 된다

Comment

필요한 기능을 정리해보자

기능설명주소controller
GET댓글 목록/posts/:postId/commentsgetComments
POST댓글 작성/posts/:postId/commentsaddComment
PATCH댓글 수정/posts/:postId/comments/:commentIdupdateComment
DELETE댓글 삭제/posts/:postId/comments/:commentIddeleteComment
  • model은 데이터를 직접 다루는 함수로 controller에서 사용할 로직을 구현하면 된다

profile
'◡'✿ 꿈을 찾아가보자고~ '◡'✿

0개의 댓글