본문 바로가기
Restful API

[Restful API] python flask에서 Resource 클래스를 이용한 API 서버 개발

by coding_su 2023. 1. 4.

📝python flask에서 Resource 클래스를 이용한 API 서버 개발

API를 만들기 위한 클래스를 작성한다 (class란? 변수와 함수로 구성된 묶음)
※ 클래스는 상속이 가능하다
API를 만들기 위해서는 flask_restful 라이브러리의 Resource 클래스를 상속해서 만들어야 한다

 

API를 처리하는 함수 개발(HTTP Method를 보고 똑같이 만들어준다)

※ 쿼리문을 만들때는 MySQL Workbench에서 먼저 테스트하고 코드를 복사해 붙여넣는다

 디버깅을 하면서(print) 코드를 작성해야 나중에 에러찾기에 고생을 덜 한다

# 만들 클래스 파라미터에는 Resource를 입력해준다
class RecipeListResource(Resource) :
			
    # 파라미터에는 self를 입력해준다
    def post(self) : 
        
        # 1. 클라이언트가 보내준 데이터가 있으면 그 데이터를 받아준다
        data = request.get_json()

        # 2. 이 레시피 정보를 DB에 저장해야한다
        try :
            # DB에 연결
            connection = get_connection()

            # 쿼리문 만들기
            query = '''insert into recipe(name, description, num_of_servings, cook_time, directions)
                    values(%s, %s, %s, %s, %s);'''

            # 쿼리에 매칭되는 변수 처리해주기(튜플로)
            record = (data['name'], data['description'], data['num_of_servings'],
            data['cook_time'], data['directions'])

            # 커서를 가져온다
            cursor = connection.cursor()

            # 쿼리문을 커서로 실행한다
            cursor.execute(query, record)

            # 커밋해줘야 DB에 완전히 반영된다
            connection.commit()

            # 자원 해제
            cursor.close()
            connection.close()

		# 에러 발생시 에러 내용을 프린트
        except Error as e :
            print(e)
            cursor.close()
            connection.close()

            return {"result" : "fail", "error" : str(e)}, 500

        # API를 끝낼때는 클라이언트에 보내줄 정보(json)와 http 상태코드를 리턴한다(보내준다)
        return {"result" : "success"}, 200

 

※ 튜플을 입력해야하는 코드에 ,형식이 아니게(튜플이 아니게) 입력하면 에러가 발생함으로 주의

댓글