RestFul API

instargram 사진 포스팅 API (4) follow와 like 서비스 구현하기

567Rabbit 2024. 5. 31. 10:34

follow 서비스 구현하기

 

 

 

 

app.py에 추가하기

from resources.follow import FollowResource

api.add_resource( FollowResource , '/follow/<int:followee_id>')

 

 

 

resources 폴더에 follow.py 파일 생성해서 입력하기

from flask import request
from flask_jwt_extended import get_jwt_identity, jwt_required
from flask_restful import Resource
from mysql_connection import get_connection
from mysql.connector import Error

class FollowResource(Resource) :
    
    @jwt_required()
    def post(self, followee_id):  #팔로우 하기
        
        user_id = get_jwt_identity()
        
        try :
            connection = get_connection()
            query='''insert into follow
                    (followerId, followeeId)
                    values
                    (%s, %s);'''
            record = (user_id, followee_id)
            
            cursor = connection.cursor()
            cursor.execute(query, record)
            connection.commit()
            
            cursor.close()
            connection.close()
        
        except Error as e:
            if cursor is not None:  # null이 아니면
                cursor.close()
            if connection is not None:
                connection.close()
            return {'result': 'fail', 'error': str(e)}, 500  # 500 에러
        
        return {'result' : 'success'}
    
    
    @jwt_required()
    def delete(self, followee_id):  #언팔로우하기
        
        user_id = get_jwt_identity()
        
        try :
            connection = get_connection()
            query='''delete from follow where followerId = %s and followeeId = %s;'''
            record = (user_id, followee_id)
            
            cursor = connection.cursor()
            cursor.execute(query, record)
            connection.commit()
            
            cursor.close()
            connection.close()
        
        except Error as e:
            if cursor is not None:  # null이 아니면
                cursor.close()
            if connection is not None:
                connection.close()
            return {'result': 'fail', 'error': str(e)}, 500  # 500 에러
        
        return {'result' : 'success'}

 

 

 

MySQL DB에서 보면,

select * from follow;

 

 

 

 

 

 

 

 

 

 

like 서비스 구현하기

 

 

 

 

app.py에 추가하기

from resources.like import LikeResource

api.add_resource( LikeResource, '/posting/<int:posting_id>/like')

 

 

 

 

resources 폴더에 like.py 파일 생성해서 입력하기

from flask import request
from flask_jwt_extended import get_jwt_identity, jwt_required
from flask_restful import Resource
from mysql_connection import get_connection
from mysql.connector import Error

class LikeResource(Resource) :
    
    @jwt_required()
    def post(self, posting_id) :   #좋아요 누르기
        
        user_id = get_jwt_identity()
        
        try :
            connection = get_connection()
            query = '''insert into `like`
                        (postingId, userId)
                        values
                        (%s, %s);'''
            record = (posting_id, user_id)
            cursor = connection.cursor()
            cursor.execute(query, record)
            connection.commit()
            
            cursor.close()
            connection.close()
            
        except Error as e:
            if cursor is not None:  # null이 아니면
                cursor.close()
            if connection is not None:
                connection.close()
            return {'result': 'fail', 'error': str(e)}, 500  # 500 에러
        
        return {'result' : 'success'}
    
    
    @jwt_required()
    def delete(self, posting_id) :  #좋아요 취소
        
        user_id = get_jwt_identity() 
        
        try :
            connection = get_connection()
            query = '''delete from `like` where postingId = %s and userId = %s; '''
            record = (posting_id, user_id)
            cursor = connection.cursor()
            cursor.execute(query, record)
            connection.commit()
            
            cursor.close()
            connection.close()
            
        except Error as e:
            if cursor is not None:  # null이 아니면
                cursor.close()
            if connection is not None:
                connection.close()
            return {'result': 'fail', 'error': str(e)}, 500  # 500 에러
        
        return {'result' : 'success'}

 

 

 

 

MySQL DB에서 보면,

select * from `like`;