본문 바로가기
Restful API

[Restful API] Query String 검색하는 API 만들기

by coding_su 2023. 1. 10.

📝Query String 검색하는 API 만들기

포스트맨에서 Query String할 키와 밸류값을 Query Params에 입력한다

(http://localhost:5000/movie/search?keyword=The&offset=0&limit=25)

검색할 값(keyword)과 페이징할 값(offset, limit)을 입력해줬다

코드를 작성할때 클라이언트에서 쿼리스트링으로 보내는 데이터는 request.args에 들어있다

변수로 저장해서 쿼리문에 사용하기

※ 주의할점 MySQL Workbench 쿼리문 작성할때 컬럼은 n이다에만 %s 사용하고 그외는 변수를 더해준다

class MovieSearchResource(Resource) :

    def get(self) :
        keyword = request.args.get('keyword')
        offset = request.args.get('offset')
        limit = request.args.get('limit')

        try :
            connection = get_connection()

            query = '''select m.id, m.title, ifnull(count(r.movie_id),0) as cnt,
                    ifnull(round(avg(r.rating),1),0) as avg
                    from movie m
                    left join rating r
                    on m.id = r.movie_id
                    where m.title like '%''' + keyword + '''%'
                    group by m.id
                    limit ''' + offset + ''' , ''' + limit + ''' ; '''

            cursor = connection.cursor(dictionary= True)

            cursor.execute(query, )

            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)}, 200

궈리문 검색 기능 사용할때(like) 참고하기 + fulltext

(https://coding-jisu.tistory.com/104)

댓글