💻/프로젝트

[Node.js] 팀 프로젝트: 뉴스피드 서비스

S0 2024. 2. 16. 01:18

 

이번 주제는 뉴스피드 구현이었고 주제부터 정하는 형식이었다.

우리 조는 팀원 한 분께서 탐정들의 영업비밀이라는 프로그램 얘기를 꺼내주셨고, 그 얘기를 들으니 로톡의 해결사례 페이지가 떠올라서 말씀을 드리게 되었다.

그렇게 최종적으로 나온 주제는 법률 문제에 익숙하지 않은 일반인들을 대상으로 한 뉴스피드였다.

모여서 관련 고민도 나누고 전문 법조인들의 답변도 얻는 느낌을 구상했다.

 

erd

 

 

공개된 프로젝트이기는 하나 혹시몰라서 팀원분들 성함 부분은 잘랐습니다!

나는 댓글 작성, 조회, 수정, 삭제, 그리고 소셜 로그인 구현을 맡았다.

 

 

댓글 작성

먼저 post로 받아와서 인증 미들웨어를 거쳐 로그인이 되어있는(=토큰이 있는) 유저인지 확인한다.

board는 현재 구현 중인 comment가 달릴 게시글이다.

댓글은 무조건 게시글에 종속되어있고 일반적인 게시판 형식을 떠올렸을 때 게시글 없이 댓글만 볼수있는 뷰는 흔치 않다.

게시글이 없으면 댓글을 달 수 없기 때문에, 먼저 댓글을 달 게시글이 존재하는지부터 확인하는 유효성 검사로 시작한다.

그래서 댓글 CRUD 코드를 우선 작성해놓고, 게시글 구현이 끝날 때까지 api 테스트는 해볼수 없었는데 이 부분, 그리고 후에 댓글 좋아요 기능을 구현하신 팀원 분이 해당 라우터 파일로 들어와서 수정하실때 우리가 진짜 (아직 공부하는 단계지만)협업을 하고 있구나 하는 생각이 들었다!

 

댓글 조회

 

댓글 수정

 

댓글 삭제

 


이외에는 라우터 파일에서 유효성 검사와 http 상태 코드가 알맞게 들어가있는지 점검하고 팀원들의 기준을 하나로 통일하는 역할도 담당했었는데, 이를 위해 http 상태코드를 자세히 살펴보면서 400번대 코드에 대해 조금 더 알게 되고 고민도 할수 있었던 좋은 경험이었다.

아래 내용은 내가 이해한 것을 바탕으로 잡은 기준인데, 칼같이 정확하지는 않을 것 같고 앞으로도 api를 많이 작성해봐야 더 잘 알게 될것같다.

400:
회원가입 관련, 공란, 틀린 정보

401:
로그인 등 인증 관련 오류

404:
존재하지 않는 정보

409:
중복 가입 등의 충돌

 

그리고 유효성 검사 관련으로 생각해보면 좋을 주제를 보게 됐다.

유효성 검사가 촘촘하게 진행되면 필연적으로 보안이 취약해질 수 있다는 의견이었다.

(만약 로그인 정보가 틀리다면 유추할수있는 선택지를 최소화할 수 있도록 아이디가 틀린 건지, 비밀번호가 틀린 건지 정확하게 알려줘서는 안된다는 식의..)

결국 사용자의 편의성과 보안 문제 중 어느 쪽에 중요도를 둘 건지에 대한 문제인거겠지?

앞으로 만들게 될 서비스의 성격에 따라 달라질 것 같다.(아닌가?)

 


user 라우터 파일에 구현한 카카오 로그인 코드

이번 소셜 로그인 구현은 passport 를 이용하여 구현해봤다.

passport 자체가 복잡한 시스템이라 먼저 passport에 대한 이해가 필요했고(어렵지만 익혀두면 쓰기 쉬운 모듈이라고 했다), 그러기 위해서는 또 OAuth 2.0에 대한 이해가 우선적으로 이루어져야 했다.

OAuth까지는 겨우겨우 감을 잡을 수 있었는데, 시간이 부족해서 passport까지는 찬찬히 들여다보지 못한 것이 아쉽다.

더 공부해서 네이버 로그인도 같이 구현하고 싶다!

그렇게 되면 해당 카카오 코드도 라우터로 따로 빼봐야겠다.

 

카카오로 로그인을 해서 유저 정보를 받아오는 것까지는 성공해서 기뻤다! (콘솔로 확인)

그런데 로그인 직후에 콜백으로 받아오는 부분이 제대로 안 돌아가는 것 같아서 제출은 끝났지만 여기까지는 손을 보고 넘어가고 싶다.

 

카카오 로그인 구현 중 마주쳤던 오류

 

 

https://github.com/julie-kim-dev/LAW-IN_PROJECT

 

GitHub - julie-kim-dev/LAW-IN_PROJECT: 법과 관련된 문제를 고민하고 도움을 받는 웹 사이트

법과 관련된 문제를 고민하고 도움을 받는 웹 사이트. Contribute to julie-kim-dev/LAW-IN_PROJECT development by creating an account on GitHub.

github.com


다같이 기획부터 들어갈수 있다는 것이 뭔가 책임감도 더 크게 생기고 도움이 많이 되는 경험이었다.

실력도 좋고 잘 챙겨주시는 팀원 분들을 만난 덕분에 혼자였다면 엄두도 못 냈을 어려운 기능들도 조금씩 도전해볼수 있어서 좋았다.

감사합니다 🤝