Restful API

[Restful API] Python Flask로 RESTful API 서버 개발, Resource 클래스 활용

건휘맨 2024. 5. 21. 10:55

클래스는 변수와 함수로 구성된 묶음이며

API를 만들기 위해서는 flask_restful 라이브러리의 Resource 클래스를 상속해야 한다.

 

API를 처리하는 함수를 개발할 때는 HTTP Method에 따라서 동일한 기능을 제공해야 한다.

쿼리문은 MySQL Workbench에서 먼저 테스트하고 코드를 복사하여 붙여넣는 것이 좋다.

 

from flask import request
from flask_restful import Resource

from mysql_connection import get_connection
from mysql.connector import Error


class RecipeListResource(Resource):
    
    def post(self):

        # 1. 클라이언트가 보내준 데이터가 있으면 그 데이터를 받아준다.
        
        data = request.get_json()

        # 2. 이 정보를 DB에 저장한다.
        try:
            ### 1. DB에 연결
            connection = get_connection()

            ### 2. 쿼리문 만들기
            query = '''insert into recipe
                        (name, description, num_of_servings, cook_time, directions)
                        values
                        (%s, %s, %s, %s, %s);'''
            
            ### 3. 쿼리에 매칭되는 변수 처리 => 튜.플.로.
            record = (data['name'], data['description'], data['num_of_servings'], data['cook_time'], data['directions'])

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

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

            ### 6. DB에 완전히 반영하기 위해서는 commit 한다.
            connection.commit()

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

        except Error as e:
            if cursor is not None:
                cursor.close()
            if connection is not None:
                connection.close()
            return {'result' : 'fail', 'error' : str(e)}, 500
        
        return {'result' : 'success'}