RestFul API

MySQL DB를 RestFul API와 연결하고 Postman으로 실행하기 + Get API

567Rabbit 2024. 5. 21. 12:24

Postman

 

 

 

GET의 Request는

 

Query String(Query Parameters)을 사용한다

- offset : 0

- limit : 25

 

 

 

 

 

DB 설계하기

 

코드 입력하고 실행하기 (비밀번호 부분 수정해서 입력한다)

-- recipe_db 에만 전용으로 접속할 수 있는 계정을 만들어야 한다

use mysql;
create user 'recipe_db_user'@'%' identified by '비밀번호 자유롭게 설정한다';
grant ALL privileges on recipe_db.* to 'recipe_db_user'@'%';

 

 

 

aws 엔드포인트 복사

 

 

 

 

 

MySQL Hostname에 붙여넣기

 

 

 

비밀번호는 앞전에 설정한대로 입력하기

 

 

 

 

 

DB로 들어가 recipe Table을 만든다

 

 

 

 


POSTMAN에서 가져올 데이터를 생성해준다 (Mysql에서 해도 된다)

 

 

 

 

 

 

 

 

VSCode

 

recipe.py에 get 함수를 만들어준다

 

- '''+offset+''' , '''+limit+'''는 문자열로 만들어주는 python 문법이다

- fetchall은 전부(all) 가져오라는 뜻이다.

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

class RecipeListResource(Resource) :

	def get(self) :
        
        # 1. 클라이언트가 보낸 데이터가 있으면 받아준다.
        
        offset = request.args['offset']
        limit = request.args['limit']
        
        # 2. DB로부터 데이터를 가져온다
        try :
            
            connection = get_connection()
            
            query = '''select * from recipe limit '''+offset+''' , '''+limit+''' ;'''
            
            cursor = connection.cursor(dictionary=True) 
            # dictionary=True 하는 이유는 리스트 형식이 아닌 json형식으로
            # 프론트엔트 개발자에게 주기 위해서이다.
            
            cursor.execute(query)            
            
            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 만들어서 응답한다
        # datetime과 같은 문자나 숫자가 아닌 것들을 문자로 만들어야 한다
        # isoformat()는 문자로 만들어주는 함수이다
        
        i = 0
        
        for row in result_list :
            result_list[i]['createdAt'] = row['createdAt'].isoformat()
            result_list[i]['updatedAt'] = row['updatedAt'].isoformat()
            i = i + 1
            
        print()
        print(result_list)
        
        return { 'items' : result_list,
                'count' : len(result_list),
                'result' : 'success' }

 

 


app.py 작성

 

 

 



mysql_connection.py 작성

 

- vscode cmd에 connector 설치 

pip install mysql-connector-python

 

 

 

 

config.py 작성

 

 

 

 

 

컨트롤+s로 파일 저장시키고, flask run 하기

 

 

 

 

이 화면이 뜨지 않으면 파일 저장을 했는지 확인하자

 

 

 

 

 

 

 

postman에서 send를 누르면 아래와 같이 뜬다