좋아요 하고 즐겨찾기를 따로 만드면 둘다 가능
즐겨찾기
즐겨찾기 추가 api
post /favorite/movie_id(숫자)
header JWT Token(user id)
movie id는?
즐겨찾기 삭제 api
delete /favorite/movie_id(숫자)
header jwt token
class FavoriteResource(Resource) :
@jwt_required()
def post(self,movie_id) :
pass
@jwt_required()
def delete(self,movie_id) :
return
꼭 잊지말고 규칙임 self 옆에 movie_id
app연결하고 워크벤치가서 연습
insert into favorite
(user_id,movie_id)
values
(1002,1);
select *
from favorite;
잘되니까 바로 쿼리문 수정하고 레코드 작성후 cursor실행및 닫기 및 오류 시 까지 다 복사
def post(self,movie_id) :
user_id = get_jwt_identity()
try :
connection = get_connection()
query = '''insert into favorite
(user_id,movie_id)
values
(%s,%s);'''
record = (user_id,movie_id )
cursor = connection.cursor(dictionary=True)
cursor.execute(query, record)
result_list = cursor.fetchall()
cursor.close()
connection.close()
except Error as e :
print(e)
cursor.close()
connection.close()
return {"error" : str(e)}, 500
return {"result" : "success"}
삭제는 다 똑같고
쿼리만 수정
delete from favorite
where user_id = 1002 and movie_id = 1;
즐겨찾기 리스트 불러오기
get /favorite? → 쿼리 스트링
get /favorite?offset=0&limit=25
jwt token
class FavoriteListResource(Resource):
@jwt_required()
def get(self) :
user_id = get_jwt_identity()
# 클라이언트에서 쿼리스트링으로 보내는 데이터는
# request.args 에 들어있다.
offset = request.args.get('offset')
limit = request.args.get('limit')
try :
connection = get_connection()
query = ''' '''
record = (user_id, )
return
앱연결하고
워크벤치에서 연습
select f.id ,f.movie_id, m.title,m.genre, ifnull(count(r.movie_id),0) as cnt , ifnull(avg(r.rating),0) as avg
from favorite f
join movie m
on f.movie_id = m.id
left join rating r
on r.movie_id = m.id
where f.user_id = 1002
group by f.movie_id
limit 0,25;
class FavoriteListResource(Resource) :
@jwt_required()
def get(self) :
user_id = get_jwt_identity()
offset = request.args.get('offset')
limit = request.args.get('limit')
try :
connection = get_connection()
query = '''select f.id, f.movie_id, m.title, m.genre,
ifnull( count(r.movie_id) , 0) as cnt ,
ifnull( avg( r.rating ) , 0 ) as avg
from favorite f
join movie m
on f.movie_id = m.id
left join rating r
on r.movie_id = m.id
where f.user_id = %s
group by f.movie_id
limit '''+offset+''', '''+limit+''';'''
record = (user_id, )
cursor = connection.cursor(dictionary=True)
cursor.execute(query, record)
result_list = cursor.fetchall()
i = 0
for row in result_list :
result_list[i]['avg'] = float( row['avg'] )
i = i + 1
cursor.close()
connection.close()
except Error as e :
print(e)
cursor.close()
connection.close()
return {'error' : str(e)}, 500
return {'result' :'success',
'items' : result_list,
'count' : len(result_list)}
'Api 개발 > flask' 카테고리의 다른 글
serverless 서버 서울로 바꾸기 (0) | 2023.01.11 |
---|---|
API 소스코드 lambda에 배포하기 (0) | 2023.01.10 |
영화추천 모듈화 개발 (0) | 2023.01.10 |
MySQL에서 admin 계정만들기 (0) | 2023.01.04 |
플라스크 프레임워크 설치 및 가상환경 구축 (0) | 2023.01.03 |