오늘은 좋아요 기능 구현을 금일 API 기능 구현 목표치로 정해두고 진행을 하였다.
like 기능을 구현하기 전에 comment app에 comment와 like 두 가지 기능이 함께 명시되어 있는 상황이었기에 like 기능 구현을 위해 따로 like app을 생성해준 뒤 필요한 부분을 따로 옮겨주면서 comment와 like를 분리해주는 작업을 진행해주었다.

좋아요 관련 기능은 like app에서 진행할 수 있도록 만들어준 뒤 API 구현을 진행하였다.
좋아요 API 구현을 하는 도중 앱 생성 후 commit을 하는 과정에서 실수가 발생하였다.
'like/urls.py'로 생성하여 commit을 해야 됐었으나, 확장자명(.py)을 까먹고 만들어버리는 바람에 commit을 되돌리고자 명령어를 적어주었다.
'git reset --hard HEAD^' 명령어를 사용하여 관련된 commit을 되돌리려고 하였으나, 명령어를 중복으로 입력하는 실수로 인해 일부분 작성하였던 코드를 삭제시켜버렸다.
해당 실수로 인하여 다소 시간이 지체되었으나, 이후 다시 좋아요 등록 기능을 구현해두었다.
# like/views.py
from rest_framework.views import APIView
from rest_framework import status
from rest_framework.response import Response
from user.models import User
from comment.models import PostType, Like
from like.serializers import LikeSerializer
class LikeView(APIView):
# 좋아요 등록 : /like/
def post(self, request):
try:
request_user = request.data.get("user", "")
request_posttype = request.data.get("posttype", "")
post_id = request.data.get("post_id", "")
user = User.objects.get(id=request_user)
posttype = PostType.objects.get(id=request_posttype)
like_serializer = LikeSerializer(data=request.data)
if Like.objects.filter(user=user, posttype=posttype, post_id=post_id).exists():
return Response({"error": "이미 좋아요를 등록했습니다."}, status=status.HTTP_400_BAD_REQUEST)
if like_serializer.is_valid():
# like_serializer.save(user=user, posttype=posttype)
return Response({"message": "좋아요 등록 성공"}, status=status.HTTP_200_OK)
except:
return Response({"error": "좋아요 등록 실패"}, status=status.HTTP_400_BAD_REQUEST)
# 좋아요 취소 : /like/
def delete(self, request):
return Response({})
해당 API가 정상적으로 잘 작동되는지 Postman에서 확인을 해보았다.

좋아요 등록 API가 정상적으로 작성되는 것을 확인하였고, 이후 DB에도 해당 데이터가 잘 들어가는지 확인해주었다.

해당 값과 일치한 데이터가 들어가는 것을 확인할 수 있었다.
이후 이미 똑같은 값이 있거나 에러 발생 시 나오는 메시지도 확인을 해보았다.


요청받은 정보와 일치하는 것이 있다면 "이미 좋아요를 등록했습니다." 문구가 뜨는 것을 볼 수 있었다.
그리고 user_id가 11과 일치하는 정보가 없기에 오류가 발생하면 except에서 반환해준 "좋아요 등록 실패"도 잘 나오는 것을 볼 수 있었다.
-
오늘은 목표치로 좋아요 등록/삭제 기능 구현을 위해 코드를 작성하였으나, commit을 되돌리는 과정에서 실수를 범하는 바람에 다소 시간이 지체된 점이 아쉬웠다.
그래도 중간에 작성한 코드를 복구하고 완성시키느라 시간이 조금 더 걸렸지만 좋아요 등록 기능을 구현할 수 있어서 다행이라고 생각한다.
:P
'TIL 및 WIL > TIL (Today I Learned)' 카테고리의 다른 글
| [TIL] 2022.07.21 (MLT API 구현, My Little Trip(8)) (0) | 2022.07.21 |
|---|---|
| [TIL] 2022.07.19 (MLT API 구현, My Little Trip(7)) (0) | 2022.07.19 |
| [TIL] 2022.07.15 (MLT API 구현, My Little Trip(5)) (0) | 2022.07.15 |
| [TIL] 2022.07.14 (MLT API 구현, My Little Trip(4)) (0) | 2022.07.14 |
| [TIL] 2022.07.13 (MLT API 구현, My Little Trip(3)) (0) | 2022.07.13 |