API 설정
일단 포스트맨에서 페이징해서 보기 위해 offset과 limit을 설정해주자
그리고 HTTP 메소드는
CRUD중 Read의
GET으로 설정
GET 설정
def get(self) :
# 1. 클라이언트가 보낸 데이터가 있으면 받아준다
offset = request.args['offset']
limit = request.args['limit']
우선 함수의 시작부분을 적는다
request.args['offset']은
json형태로 값을 가져오기 때문에
딕셔너리형태로 된 request.args에서 'offset' 을 가져오기때문에
( ) 가 아닌 [ ]로 표기한다
limit도 마찬가지
offset = request.args.get('offset', 0)
limit = request.args.get('limit', 25)
이 부분은 이렇게도 사용가능하며 뒤에 숫자들은 설정을 하지않았을때의 기본값이 된다
DB연결, 쿼리문 작성
try :
connection = get_connection()
query = '''select*
from recipe
limit '''+offset+''', '''+limit+''';'''
# record = ()
DB를 연결해주고
쿼리문을 작성하는데 이때
limit 에서는 offset과 limit을 클라이언트가 입력하는 숫자가 될 수 있도록
''' + + ''' 을 사용하여
각각 문자열로 처리해준다
record는 따로 없기때문에 주석처리
커서 불러오기, 실행, 커밋, 자원해제
cursor = connection.cursor()
cursor.execute(query)
result_list = cursor.fetchall()
print(result_list)
cursor.close()
connection.close()
그리고 커서를 가져와 실행
그리고 커밋 후 확인
이때 수정은 커밋 대신 fetchall로 대신한다
자세한 설명은 아래링크로
[API] - Python으로 Mysql 접속, DB에 저장하는법
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
해서 확인해봤는데 JSON형식의 딕셔너리{ }가 아닌
소괄호가 튀어나왔다
그래서 이걸
딕셔너리 형태로 바꿔줘야 한다
JSON은 { dictionary } 형태
cursor = connection.cursor(dictionary=True)
커서를 가져오는 부분에서 딕셔너리=트루를 적어준다
이후 딕셔너리형태로 나오게 된다
그 후 클라이언트에게 리턴하기위해 아래와 같이 입력후확인해보면
return {'items' : result_list,
'count' : len(result_list),
'result' : 'success'}, 200
내가 설정하지 않은 에러메세지와 함께
데이트타임 타입이 JSON과 맞지않다라고 나오게 된다
TypeError: object of type datetime is not JSON serializable
그렇다 자세히 보면 created_at과 updated_at
즉, 작성시간과 수정시간이 데이트타임형식인데 반해
제이슨형식은 문자와 숫자밖에 내보낼수 없다
그렇기에 변환시켜 줘야 한다
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
라고 마지막 리턴 전에 적어주어
앞의 결과에서 작성시간과 수정시간의 형식을 for 반복문으로 isoformat() 을 이용하여
문자형식으로 변환시킨다
이제 정상적으로 나오게 된다
'API > MySQL API' 카테고리의 다른 글
게시글 비공개,공개하는 API (0) | 2024.05.21 |
---|---|
게시글 삭제API, delete (0) | 2024.05.21 |
게시글 수정API, update (0) | 2024.05.21 |
특정 게시글 읽는 API, select where (0) | 2024.05.21 |
게시글 생성 API, insert into (0) | 2024.05.21 |