개발자
안녕하세요 사이드 프로젝트에서 게시글에 대한 좋아요 기능을 논의하던 중 궁금한 점이 생겨서 이렇게 질문을 하게 됐습니다. 제가 고민하고 있는 구현은 두 가지 방식입니다. 첫 번째: 좋아요 API와 좋아요 취소 API를 각각 만들어둡니다. 클라이언트에서 서버에게 게시글 리스트 조회 API를 호출하면 각 게시글 필드에 좋아요 여부를 담아두고, 상황에 맞게 서버에게 좋아요 or 좋아요 취소 API를 호출합니다. 두 번째: 좋아요가 되거나 취소되는 기능이 묶인 API 한 개를 만들고 클라가 해당 API를 호출 했을 때 서버에서 데이터베이스를 확인한 후 이미 좋아요를 한 게시글이면 취소 로직을 실행하고, 좋아요를 한 적이 없으면 좋아요 등록 로직을 수행하는 API를 만듭니다. 개인적으로 생각해 봤을 때 첫 번째 방식이 API 하나 하나의 동작이 명확하고, 무분별한 API 요청에도 더 안전할 것 같다고 생각했으나, 다른 분들의 생각도 궁금해서 이렇게 질문을 올리게 됐습니다.

답변 4
인기 답변
두가지 방법 모두 가능합니다. 해당 기능을 함께 구현하는 프론트엔드와도 논의를 해보시면 될듯해요. 그리고 정 궁금하시면 이미 적용된 서비스들에서 어떻게 하고 있는지 살펴보셔도 좋습니다. 당장 커리어리만 해도 좋아요 기능이 있죠. 이때 api 호출 어떻게하는지 살펴봐보세요!

Crayon
작성자
컴퓨터공학과 • 2023년 11월 23일
프로젝트 팀 상황에 맞게 하는게 구현하는 것이 저도 맞다고 생각이 듭니다! 좋은 의견 공유해주셔서 정말 감사합니다!!
인기 답변
사용자의 관점으로 생각해 보시면 좋습니다. 좋아요 버튼 클릭에 따라 notification을 받아서 갱신하지 않는 이상 실제 상태와 동기화 문제가 있을 수 있습니다. 사용자 화면에 좋아요 상태에서 눌렀을 때 db값과 관계없이 사용자는 좋아요 취소를 하고 싶어서 눌렀다고 생각하고 동작하는게 맞습니다. 반대로 2번대로 하게되면 화면 : 좋아요 / db :좋아요 X 상태에서 사용자가 좋아요 버튼을 눌렀을 때 다시 좋아요로 표시되는 상태를 사용자가 버그로 인식할 가능성이 높습니다. 고로 저는 1번이 낫다고 생각합니다.
인기 답변
좋은 고민인 것 같습니다. 비즈니스 요구사항에 따라, 개발 조직에 따라 지향점은 다르다고 생각이 듭니다만, 2번의 경우 액션을 핸들링하는 것이기에 REST 관점에서는 일반적으로 로그인과 같이 POST 와 같은 액션 API를 따로 만들어서 핸들링하게 될 것 같네요. 개인적으로는 1번에서 명시해주신 것처럼 삭제, 생성,조회로 api를 분리하는 편이 메서드가 좋을 것 같다고 생각하는데요. 사람마다생각이 다르겠지만 보다 REST하게 자원 및 자원에 대한 행위를 구체적으로 명시 할 수도 있고(아래 코드 참고), API별로 리소스에 가하는 행위가 분리되어 있어 유지보수 측면에서 코드가 간소화 될 것 같아서 이점이 있을 것 같네요
1 2 3GET postings/{postingId}/stars #포스팅에 좋아요를 누른 리스트 조회 POST postings/{postingId}/stars #좋아요 생성 DELETE postings/{postingId}/stars/{starId} # 좋아요 삭제
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!