TIL
TIL - 뉴스피드 프로젝트 기능 소개, 소감
에그마요샌드위츼
2025. 4. 13. 15:59
1. 핵심 기능 – 게시글(Post)
- 게시글 작성
- 제목, 본문 등의 정보를 입력받아 게시글 생성
- 사용자 ID를 바탕으로 작성자와 게시글 연결
- PostRequestDto를 통해 생성 요청을 처리하고, Entity 변환 후 저장
- 게시글 수정/삭제
- 작성자 본인만 수정 및 삭제 가능
- 뉴스피드 조회
- 최신 게시글을 페이지 단위로 조회 가능
- 게시글 별 좋아요 수(likeCount) 포함
2. 핵심 기능 – 좋아요(PostLike)
- 좋아요 토글 (toggleLike)
- 하나의 API 요청으로 좋아요 누르기와 취소를 자동 처리
- 내부 로직:
- 좋아요가 이미 존재 → PostLike 삭제, likeCount 감소
- 좋아요가 없을 경우 → PostLike 생성, likeCount 증가
- 본인 게시글 좋아요 금지
- post.userId == userId 조건으로 자기 글 좋아요 방지
- 위반 시 SELF_LIKE_NOT_ALLOWED 예외 발생
- 중복 처리
- PostLikeRepository.findByUserIdAndPostId() 로 현재 상태 확인
- 중복 좋아요나 취소를 명확히 구분하지 않고, 상태 기반 토글 방식 적용
고민한 점(1) 좋아요 누르기/취소 API를 분리할지 말지
📌 1. 기존 방식: API가 두 개
- POST /api/posts/like → 좋아요 누르기
- DELETE /api/posts/like → 좋아요 취소
- 각각 다른 요청을 클라이언트에서 따로 처리해야 함
❓ 2. 문제점 및 고민
- 중복 코드 발생한다는 점
- 현재 좋아요 상태를 미리 확인하려는 로직 추가 발생할 수 있는 점
- 비슷한 기능이지만 별개 API로 나눠져 있어 관리가 어려워질 수 있다.
💡 3. 대안으로 '토글(Toggle)' 방식 고려
- 사용자가 좋아요 버튼 클릭 시 서버에 한 번의 요청만 보냄
- 서버 내부에서 현재 상태를 확인해 좋아요 추가 or 취소를 자동 결정
✅ 4. 최종 결정: API 하나로 통합
- POST /api/posts/like
- 로직:
- 사용자가 이미 좋아요를 눌렀다면 → 취소
- 아니라면 → 새로 좋아요 추가
- 클라이언트는 버튼 클릭 시 무조건 한 API만 호출
소감
이번 프로젝트를 통해 팀원들과 협업하면서 Git 커밋 컨벤션의 중요성을 체득할 수 있었고, PR(풀 리퀘스트) 기능을 처음으로 활용해봤습니다. 또, 코드리뷰를 받으면서 내 코드의 부족한 점을 발견하고, 더 나은 방향과 생각을 배울 수 있어 큰 도움이 됐습니다.
리뷰를 통해 실력이 향상된다는 걸 몸소 느낄 수 있었고, 협업의 가치와 즐거움을 느꼈던 시간이었습니다.