전체 글277 [Restful API] Python MySQL Connector를 이용해 update 하는 방법 -> Postman에서 http method는 PUT으로, 어떤 데이터를 업데이트 할 지는 경로 recipes/해당 테이블의 id값, 업데이트 할 데이터는 Body의 raw에서 json 타입으로 데이터를 요청하게 세팅한다. def put(selft, recipe_id) : # 1. 클라이언트로부터 데이터를 받아온다. data = request.get_json() try : connection = get_connection() query = ''' update recipe set name = %s, description = %s, num_of_servings = %s, cook_time = %s, directions = %s where id = %s; ''' record = (data["name"], da.. 2023. 12. 6. [Restful API] 만든 Rest API에서 DB 테이블에 없는 데이터를 select 했을 때 결과와 해결방법 -> 위처럼 요청하면 개발한 코드에 맞게 select * from recipe where id = 100이 실행되는데, -> 실제 MySQL 테이블에 가보면 id = 100에 해당하는 데이터는 없다. -> 그러므로 Postman에서는 에러가 뜬다. 해결방법) if len(result_list) == 0 : return {"result" : "fail", "message" : "해당 데이터가 없습니다."}, 400 else : return {"result" : "success", "item" : result_list}, 200 -> 해당 경로에 있는 get() 함수의 리턴 부분을 위와 같이 바꿔주면 없는 데이터는 없다고 알려주고 있는 데이터는 반환해서 보여준다. 2023. 12. 6. [Restful API] MySQL Connector 라이브러리 사용 중에, %s에 매칭되는 데이터가 1개인 경우 query = ''' select * from recipe where id = %s; ''' record = (recipe_id) cursor = connection.cursor(dictionary=True) cursor.execute(query, record) -> 위 코드를 실행하면 이런 오류가 뜬다. 이유는 record 변수엔 tuple 타입의 데이터를 넣어야 하는데, recipe_id = 1 인 상태에서 (1)로 넣어버렸기 때문이다. 해결 방법) query = ''' select * from recipe where id = %s; ''' record = (recipe_id, ) cursor = connection.cursor(dictionary=True) cursor.execute(query, r.. 2023. 12. 6. [Restful API] Rest API 개발 중, 경로에 숫자나 문자의 값이 변경 될 수 있는 경우의 처리 방법 -> 위와 같이 path = recipes/숫자 처럼 값이 변할 수 있는 경우에 처리 방법 api.add_resource(RecipeResource, "/recipes/") -> 값이 변할 수 있는 부분에 으로 처리한다. -> 그 후 API 코드가 있는 RecipeResource 클래스로 가서 해당 http method의 역할을 하는 함수인 get()의 인자에, 경로에 쓴 변수인 recipe_id를 넣어주면 된다. 2023. 12. 6. [Restful API] TypeError: Object of type ... is not JSON serializable 에러가 발생한 이유와 해결 방법 -> TypeError: Object of type datetime is not JSON serializable 에러 발생한 이유) cursor.fetchall()로 받아온 데이터를 확인하면 datetime 타입으로 된 데이터가 있다. 클라이언트에게 json 형식으로 보내줘야 한다. json은 문자열이나 숫자만 들어갈 수 있는데, datetime 타입인 데이터가 있기 때문에 발생한 에러이다. 해결법) cursor = connection.cursor(dictionary=True) -> fetchall() 함수의 인자 dictionary = True를 넣어줘서 데이터를 리스트와 딕셔너리의 형식으로 받아온 후 i = 0 for row in result_list : result_list[i]["created_a.. 2023. 12. 6. [Restful API] Python MySQL Connector를 이용해 select 하는 방법 위의 글(insert)에서 mysql.connector를 import해서 파이썬으로 MySQL 접속할 수 있게 해주는 함수를 선언한 상태 select 하는 방법) -> Postman에 http method는 GET, URL, Body는 none으로 작성한다. from flask import request from flask_restful import Resource from mysql_connection import get_connection from mysql.connector import Error def get(self) : # 1. 클라이언트로부터 데이터를 받아온다. # 없음 # 2. db에 저장된 데이터를 가져온다 try : connection = get_connection() query = '.. 2023. 12. 6. [Restful API] Python MySQL Connector를 이용해 insert 하는 방법 import mysql.connector def get_connection() : connection = mysql.connector.connect( host = "AWS RDS의 엔드포인트", database = "해당 스키마(데이터베이스)", user = "MySQL 유저 이름", password = "해당 유저 비밀번호" ) return connection -> 먼저, mysql.connector를 import 해준 후 파이썬으로 MySQL에 접속할 수 있게 만들어준다. Postman 실행 http method를 POST로 설정 URL 입력 Body에 insert할 데이터를 json 형식으로 입력해준다. from flask import request from flask_restful import R.. 2023. 12. 6. [Restful API] python flask에서 Resource 클래스를 이용한 API 서버 개발 API 서버 개발을 위해 클래스(RecipeListResource)를 새로 만들고, flask_restful의 Resource 클래스를 상속한다. API를 처리하는 함수는 http Method를 보고 똑같이 만들어준다. 쿼리문을 만들 때는 MySQL에서 먼저 테스트 한 후 문제가 없다면 코드를 복사해 넣는다. from flask import request from flask_restful import Resource from mysql_connection import get_connection from mysql.connector import Error # resources 폴더 안에 만드는 파일에는 API를 만들기 위한 클래스를 작성한다. # API를 만들기 위해서는 flask_restful 라이브러리.. 2023. 12. 5. [Restful API] 포스트맨(Postman) 설치 방법, 세팅 방법 포스트맨(Postman)이란, API 개발 및 테스트를 쉽게 할 수 있도록 도와주는 프로그램이다. Postman을 사용하면 API 요청을 생성하고 테스트할 수 있으며, 요청을 전송하고 응답을 확인하는 등의 작업을 편리하게 수행 할 수 있다. 포스트맨 설치 (https://www.postman.com/downloads/) 설치 후 회원가입, 실행 한 후 Home 화면으로 와서 -> Workspaces 클릭 -> 클릭 -> 체크 후 Next 클릭 -> 개인 : Personal , 팀 : Team으로 Name과 Summary 작성 후 Create 클릭 -> 만든 workspace 들어간 후 좌측에 Collections 클릭 후 +버튼 클릭 후 Blank collection 클릭 -> 만들어진 collectio.. 2023. 12. 5. [Restful API] python flask app.py 코드 설명 # flask 프레임워크를 이용한 Restful API 서버 개발 from flask import Flask from flask_restful import Api from resources.recipe import RecipeListResource app = Flask(__name__) api = Api(app) # API를 구분해서 실행시키는 것은 HTTP method와 url의 조합이다. # 리소스(API코드)와 경로를 연결한다. api.add_resource(RecipeListResource, "/recipes") if __name__ == "__main__" : app.run() -> API코드는 resources 폴더 안에 있는 recipe.py 파일에 따로 저장하고 import해서 쓴다. 2023. 12. 5. 이전 1 ··· 16 17 18 19 20 21 22 ··· 28 다음