포스트맨을 실행시켜 POST로 설정하고 URL을 입력해준다
※ 포스트맨 겟(GET)과 딜리트(DELETE)는 바디(Body)에 셋팅하지 않는다
Visual Studio Code에서 아래처럼 코드를 작성해준다
+ app.py에 경로와 리소스(API코드)를 연결하는 코드도 작성해준다
>>> api.add_resource(RecipeListResource, '/recipes')
from flask import request
from flask_restful import Resource
from myspl_connection import get_connection
from mysql.connector import Error
class RecipeListResource(Resource) :
def get(self) :
# 1. 클라이언트가 보내준 데이터를 받아온다
# 없기때문에 작성하지 않는다
# 2. DB에 저장된 데이터를 가져온다
try :
connection = get_connection()
query = '''select * from recipe;'''
# 중요. select문은 cursor가져올때 dictionary= True로 해준다
cursor = connection.cursor(dictionary= True)
cursor.execute(query)
result_list = cursor.fetchall()
print(result_list)
# 중요. DB에서 가져온 timestamp는 파이썬에서 datetime으로 자동 변환되는데
# 문제는 json으로 클라이언트한테 데이터를 보내줘야하는데 datetime은 json으로 보낼 수 없다
# 따라서 시간을 문자열로 변환해서 보내준다
i = 0
for row in result_list :
result_list[i]['created_at'] = row['created_at'].isoformat()
result_list[i]['updated_at'] = row['updated_at'].isoformat()
i = i + 1
cursor.close()
connection.close()
except Error as e :
print(e)
cursor.close()
connection.close()
return {"result" : "fail", "error" : str(e)}, 500
return {"result" : "success", "items" : result_list, "count" : len(result_list)}, 200
코드를 작성하고 비주얼 스튜디오 코드에서 서버를 실행시키고(flask run)
포스트맨에서 Send를 클릭해 하단의 정보를 확인하고 상태코드가 200 OK 됐는지 확인한다
+ 1개만 셀렉트(select)해서 가져오기
class RecipeResource(Resource) :
def get(self, recipe_id) :
# 1. 클라이언트로부터 정보를 가져온다
# print(recipe_id) 디버깅
# 2. DB로부터 해당 레시피 아이디에 맞는 레시피 데이터를 가져온다
try :
connection = get_connection()
query = '''select * from recipe
where id = %s ;'''
# 튜플로 작성해준다(, 안찍으면 에러 발생)
record = (recipe_id, )
cursor = connection.cursor(dictionary= True)
cursor.execute(query, record)
result_list = cursor.fetchall()
i = 0
for row in result_list :
result_list[i]['created_at'] = row['created_at'].isoformat()
result_list[i]['updated_at'] = row['updated_at'].isoformat()
i = i + 1
cursor.close()
connection.close()
except Error as e :
print(e)
cursor.close()
connection.close()
return {"result" : "fail", "error" : str(e)}, 500
if len(result_list) == 0 :
return {"result" : "fail", "message" : "데이터 없습니다"}, 400
return {"result" : "success", "item" : result_list[0]}, 200
'RestfulAPI' 카테고리의 다른 글
Restful API MySQL PUT 요청을 처리하는 방법(수정하기) (0) | 2024.05.22 |
---|---|
TypeError: Object of type ...is not JSON serializable 에러 발생 이유와 해결 방법 (0) | 2024.05.22 |
Restful Python 에서 MySQL 에 데이터 인서트 하는 방법 (0) | 2024.05.22 |
Restful Python MySQL Connector 설치 방법 (0) | 2024.05.22 |
가상환경 설정 및 필요한 프레임워크와 라이브러리 설치,postman 설치 및 실 (0) | 2024.05.20 |