TIL 45일차 - 3계층 아키텍처 추가 연습

박찬웅·2023년 3월 23일
0

항해99

목록 보기
50/105

23년 3월 22일

  • 어제 깜빡하고 TIL를 작성하지 못했습니다. 그래서 하루 늦은 22일에 작성했습니다.

배운 것

프론트앤드 분들이랑 추가적으로 말한 것 있는지, 내일 발표 일정에 대해서 논의했고, 시간이 남아서 스스로 3계층 아키텍처 저번에 구현 못했던 로그인 API와 게시글 API를 만들어 보았다.

시도 한 것

사실상 어제 부로 백엔드에서 API 개발은 모두 다 끝나서 이제 남는건 프론트 앤드분들이 무사히 마무리 하여서 배포 하는 과정만 남았다. 백앤드 분들이랑 기존 작성한 API를 3계층 아키텍처를 구현하려고 시도해봤지만 이미 전부다 3계층 구현하지 않은 상태로 작업이 끝난 상태라 하려면 큰 충돌과 애러가 있을 것 같아서 결국 3계층 아키텍처는 이번 프로젝트에서는 적용을 하지 않는 방향으로 가게 되었다.

그래서 어제 구현 못했던 로그인 API와 게시글 API를 작성하였다.
먼저 어제 구현하다가 막혔던 로그인 API는 상당히 생소하였다. 일단 POST를 보내는건 맞지만 데이터베이스를 만드는것이 아니라서 상당히 애를 먹었었다. 그래서 이 부분은 chatGPT를 통해서 해결을 하였다. 먼저 라우터에는 post문 한개만 적고난 후 컨트롤러에서는 아이디와 비밀번호만 가져다와 로그인을 성공하면 토큰값을 주는 것만 적었다. 그리고 서비스에서는 닉네임이나 비밀번호가 올바르지 않으면 이번에 처음 사용한 throw error문을 사용해서 컨트롤러 catch문으로 빠지게 구현을 하였다.
마지막으로 레파지토리에서는 해당 아이디를 한개를 찾는 findOne를 사용하여서 userId의 조건을 가진 해당 유저를 찾는 것을 지정하였다.

다음은 게시글 api를 3계층을 분리하는 과정이였다. 사실 해당부분이 회원가입보다는 적어야 할 코드는 많았지만 그만큼 강의노트를 최대한 참고하여서 작성하였다.
라우터는 총 5개로 게시글 작성, 게시글 전체 조회, 게시글 상세 조회, 게시글 수정, 게시글 삭제 총 5가지의 API를 구현하였고, 이중 게시글 작성, 수정, 삭제는 로그인 한사람분들만 이용 가능하게 하였다.

const authMiddleware = require("../middlewares/auth-middleware.js");

const PostsController = require('../controllers/posts.controller');
const postsController = new PostsController();

router.post('/', authMiddleware, postsController.createPost); // 게시글 작성
router.get('/', postsController.getPosts); // 게시글 조회
router.get('/:postId', postsController.getPostById); // 게시글 상세조회
router.put('/:postId', authMiddleware, postsController.updatePost); // 게시글 수정
router.delete('/:postId', authMiddleware, postsController.deletePost); // 게시글 삭제

다음 컨트롤러에서는 파람스, 바디 값, 그리고 토큰을 확인 후 try catch문을 사용해서 여기서 대부분 에러핸들링을 처리를 하였다.
그런 다음 서비스에서는 해당 값들을 반환해주거나 해당 컬럼들 값을 레파지토리에게 전달하는 용도로 사용하였다. 마지막으로 레파지토리에서는 서비스에서 가져온 값들은 데이터베이스에 저장을 하거나 조건을 찾아서 수정, 삭제 할 수 있게 구현을 하였다.
이렇게 늦었지만 레벨5 과제는 마무리는 하였다.

이 뒤에 내일 스스로 직접 발표하는 팀원이 없어서 결국에는 사타리타기를 하였는데 백앤드 팀장님이 걸리셨다. 그리고 3계층 코드 복습을 가지고 마무리 하였다. 마무리 하다보니 12시가 넘어가지고 그대로 TIL 안쓴 걸 모른체 잠이 들어버려서 오늘 오후시간 잠깐 빈시간에 어제 TIL를 적었다.

해결

백앤드에서 처리 할 부분은 모두 다 끝나서 프론트앤드 분들이랑 약간 논의 해야 할 부분만 말하였고, 남은 빈 시간에는 3계층 아키텍쳐 연습을 마무리 하였다.

알게 된 점

이번 프로젝트에서 나는 아직 서툴어진 부분이 많았다. 3계층 아키텍처도 이제 겨우 어떻게 적어야 할지 알게 된 정도라 아직 부족한게 많았다고 생각한다. 다행히 이번 프로젝트에서는 3계층 아키텍처로 분리 안하고 라우터에서 모든 API를 작성하는 방향으로 갔기 때문에 다행이였지만, 다음 프로젝트 할때에는 분명히 3계층 아키텍처로 구현을 할 가능성이 높기 때문에 다음주에 상당히 고생 할것 같은 느낌이 있지만 그래도 기본적인 연습을 미리 하니까 약간 적응이 된 것 같았다.

앞으로 할 일

이제 프론트 앤드분들이 배포를 마무리 하면 시연 테스트를 하고 발표 준비를 같이 도와 줄 예정이다. 오늘 TIL를 늦게 적어서 현재는 프론트앤드 분들이 배포까지는 한 상태이다.

profile
향해 13기 node.js 백앤드

0개의 댓글