이번주는 미경님과 유리님과 한 조가 되서 다른것 걱정없이 코딩에만 집중할 수 있는 한 주 였다.
비전공자에 제로베이스인 우리 셋이 팀이라 오류가 터질때마다 사실 백지장을 맞들면서 해결해야 했기에 다른 팀들보다 더 힘들었을 수 있었는데, 서로 도와주려하고 우리 나름의 방식대로 코드의 흐름을 이해하려 노력한 한 주라 지금까지 항해99 기간 중에 가장 기억에 남을 주간이 될 것 같다. 같이 팀원이 되어주셔서 너무 감사하다는 말을 미경님과 유리님한테 전하며 마지막 정리하는 글을 작성해 보려 한다.
1. 회원 탈퇴 인가 부분 (config)
일단 과제2에 구현해야 할 부분은 완성이 되어서 추가로 회원탈퇴 기능 구현을 시도했다.
회원 탈퇴는 토큰값이 유효하거나 관리자만 할 수 있도록 코드를 작성했는데, 다른 회원으로 로그인을 해도 탈퇴를 시킬 수 있는 오류가 발생했다. 이 부분은 미경님의 예리한 눈으로 문제점을 발견했는데 바로 config 클래스의 인가부분에서 아래와 같이 모든 "/api/user/**" URL 이 permit 받았기 때문이다. 참고로 회원 탈퇴의 경로가 "/api/user/delete/{id}" 로 되어있었기 때문에 이런 오류가 발생하였다.
위의 코드를 아래와 같이 세부적으로 "/api/user/login", "/api/user/signup" 만 permit 되도록 설정해주었더니 오류 해결 !
2. Github merge 왜 안되지?
① 상황
우리조는 각자 기능 파트를 맡긴 했지만, ( 유리님 - 댓글 CRUD , 미경님 - 게시글 CRUD / 예외처리, 나 - 댓글/게시글 좋아요 + 회원탈퇴 ) 어쨌든 모든 기능을 각장 구현해보고 싶은 마음에 각자의 파일로 작업을 하고 있었다. 과제제출 마지막날 부랴부랴 깃헙을 합치려고 했더니 세명의 파일이 모두 달라서 머지를 하면 다른 사람의 파일이 원래 올려진 파일을 통째로 덮어버리는 상황이 발생했다.
② 문제 발생 이유
깃헙에 대한 지식이 무지했기 때문에, 먼저 root 파일을 만들고 그걸 clone받은 후에 작업을 해야 merge 하는 과정에서 한 파일이 될 수 있다는 것을 몰랐다.
③ 해결 방법
일단 다시 처음부터 root 파일을 만들고 시작하기엔 시간이 너무 없었기 때문에 일단 내가 만든 전체 파일을 미경님이 clone 받고, 거기에 미경님이 예외처리 부분을 다시 덧붙여서 업로드 하는 방안으로 제출을 완료했다.
이번에 깃헙으로 협업하는 연습까지 했으면 너무 좋았겠지만, 우리는 일단 각자 CRUD를 더 견고히 해보자는 생각으로 코드구현에 더 신경을 썼다. 그래서 이슈를 생성하고 PR을 날리는 그러한 작업은 하지 못한 아쉬움이 있다. 다음 프로젝트에는 깃헙으로 협업하는 연습을 해야겠다고 생각
3. 추가로 수정해야할 부분 (시간상 해결 못함)
반환타입을 아래와 같이 ResponseEntity<MsgResponseDto>로 통일했더니 위와 같이 모든 게시글에 mgs : "성공"이 반환된다. 설계대로라면 이 메시지가 모든 게시글에 뜰게 아니라 게시글 리스트 상위에 위치 해야한다.
기술 매니저님이 주신 해결방안 키워드 : ApiResult
다음 프로젝트때 사용해 보는 걸로 !
4. 마지막 받은 피드백
① Restful API
기술매니저님이 API 명세서를 보시고, 더 Restful 한 API 를 위해 URL 부분을 점층적으로 다시 작성해 보도록 제안해 주셨다.
예를들어, 이전에 작성된 게시판과 댓글의 URL 은 "/api/posts/{id}", "/api/commnets/{id}" 이런 식이었는데, 이 분에서 해당 게시글에 달린 댓글의 경우 "/api/posts/{postId}/comments/{commnetsId}" 이런식으로 계단식/ 점층적인 방법으로 설계하라고 피드백을 주셨다. 추가로 동사를 지양하고 복수형 명사로 작성해야 된다고도 알려주셨다. 지난번에 공부해서 알고는 있었는데, 회원 탈퇴의 경우 어떻게 작명을 해야할지 고민이 되긴 했다.
② common package
전역적으로 사용되는 파일들 (예를 들면, 예외처리, Jwt, ApiResult 등) 은 common 이라는 package를 만들어서 사용하기.
그리하여 수정된 사항은 아래 노션 링크 참조 !
과제 노션 링크 : https://www.notion.so/10-df14faf0f7ed43d2ae1d41d478b8b5f3
5. 프로젝트를 마치며
지난 3주를 돌이켜보면, Spring 에 대한 벽이 너무나 높게만 느껴지고 내가 과연 할 수 있을까라는 생각이 오조오억번은 들었던 주특기 주차였다. 아무래도 점점더 실력차도 실감하게 되고, 내가 직접 강의를 보고 이해하기보다 다른 사람의 코드를 보고 재작성 하다보니 자괴감이 들기도하고, 만약 현업에서 이런 참고 레퍼런스가 없다면 내가 스스로 작성할 수 있을까? 라는 생각도 드는 마음이 복잡한 한 주 였다.
그래서 일단 남의 코드를 보고 작성하더라도 완성된 코드를 계속 보면서 어떤식으로 돌아가는지 이해하려고 했고, 첫주에 봐도 모르겠다는 생각이 그래도 이제는 내 코드를 가지고 응용은 할 수 있겠다라는 상태로 바뀌게 되었다. 아무래도 이 3주가 나와 같이 기본기가 없는 사람들에겐 많이 힘들었던 기간이었던 것 같다. 그래서 무려 5명의 스프링 반 사람들이 하차를 하기도 했다.
아직 많이 부족하지만, 다음주 부터 시작되는 프로젝트에서 팀에 피해없이 1인분을 할 수 있도록 열심히 해야겠다.
'항해99 개발 일지 > [3-5주차] Spring 3주' 카테고리의 다른 글
[03] 트러블슈팅 (0) | 2022.12.14 |
---|---|
[02] 새롭게 알게된 Code 구현 부분 정리 (0) | 2022.12.14 |
[01] 게시판 프로젝트 서비스 요구사항 + ERD / API (0) | 2022.12.14 |