RestFul API

Flask(플라스크)를 사용하여 MySQL DB의 원하는 데이터를 가져오는(GET) API 만들기

567Rabbit 2024. 5. 21. 16:18

결과 미리보기

 

 

 

 

 

 

 

DB와 postman을 연동하는 방법은 아래 글을 참고한다

 

 

https://codebunny99.tistory.com/87

 

MySQL DB 설계, 연동하여 RestFul API로 GET하기(DB에 있는 데이터 가져오는 API)

Postman   GET의 Request는 Query String(Query Parameters)을 사용한다- offset : 0- limit : 25     DB 설계하기 코드 입력하고 실행하기 (비밀번호 부분 수정해서 입력한다)-- recipe_db 에만 전용으로 접속할 수

codebunny99.tistory.com

 

 

 

 

VSCode

 

 

app.py 작성하기

 

 

<int : recipe_id> 이렇게 작성하는 것을 Flask(플라스크) 라고 한다

 

 

Flask는 Python으로 작성된 경량 웹 프레임워크로, 간단한 웹 애플리케이션이나 API를 신속하게 구축하는 데 사용된다. Flask에서는 URL 경로를 라우트(route)라고 하며, 특정 경로로 접근했을 때 실행될 함수를 정의할 수 있다.

 

 

 

 

 

recipe.py 작성하기

 

from flask import request
from flask_restful import Resource
from mysql_connection import get_connection
from mysql.connector import Error

class RecipeResource(Resource):
    
    # 특정 id의 레시피 불러오는 API
    def get(self, recipe_id):
        
        # 1. 클라이언트로부터 데이터를 받는다
        print(recipe_id)
        
        # 2. DB로부터 데이터를 가져온다
        try:
            connection = get_connection()
            print('커넥션 실행')
            
            query = '''SELECT * FROM recipe WHERE id = %s;'''
            
            record = (recipe_id,) # 튜플로 만들어주기 위해서 콤마 넣어준다
            
            cursor = connection.cursor(dictionary=True)
            print('커서 가져오기 성공')
            
            cursor.execute(query, record)
            print('쿼리문 실행')            
            
            result_list = cursor.fetchall()
            print(result_list)
            
            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 에러
        
        # 3. 응답할 데이터를 json으로 만들어서 응답한다
        for row in result_list:
            row['createdAt'] = row['createdAt'].isoformat()
            row['updatedAt'] = row['updatedAt'].isoformat()
            
            
        # 결과가 없는 경우에 대한 처리
        if not result_list:
            return {'result': 'fail', 'error': '해당 아이디는 존재하지 않습니다.'}, 404

        return {'items': result_list[0], 'result': 'success'}

 

 

DB에 없는 id를 호출하면 "해당 아이디는 존재하지 않습니다" 라는 에러메시지를 뜨게 하였다.

 

 

모든 파일을 저장하여 vscode 터미널 cmd 창에 flask run 하면 결과를 볼 수 있다.

 

 

 

 

# 결과가 없는 경우에 대한 처리의 결과