반응형
레시피의 프로젝트를 진행해보자.
POST: 수정해야지/생성해야지
DELETE: 내가 만든 삭제해야지
PUT: 임시저장한 레시피를 공개해야지
DELETE: 임시저장 해야지( PUT으로 해도 되긴 함). 여기서는 퍼블리싱 하는 것을 삭제한다는 뜻으로 사용한다..
GET: 레시피를 가져온다는 뜻.
거기에 대한 URL, 클라가 저렇게 요청하면 레시피를 보여주는 것.
의미를 보고, 상황을 봐서 명령어를 사용하도록 한다. 정답이 있는 건 아니다.
새로운 레시피 작성 API
recipe.py의 파일을 resource 폴더안에 새로 생성해주고, 윤곽을 잡아준다.
from http import HTTPStatus
from flask import request
from flask_restful import Resource
from mysql.connector.errors import Error
from mysql_connection import get_connection
import mysql.connector
from mysql_connection import get_connection
class RecipeListResource(Resource):
def post(self):
user_id= get_jwt_identity()
return
그리고, app.py에 가서 윤곽을 잡아주고, 클래스명으로 경로를 잡아준다.
api = Api(app)
api.add_resource(RecipeListResource,'/recipes')
add_resource(클래스 이름, 경로명)
클라이언트에서 받아올 정보를 미리 postman에서 작성해보자.
클라이언트는 상기 형태로, 정보를 보내올텐, 서버에서는 상기정보를 토대로 데이터 처리할 준비를 하면 된다.
vscode에서 실행 코드는 하기와 같다.
def post(self):
# 딱 요 형식으로 만들어야 한다. 이게 flask 프레임워크임. 정해져있음.
# 만든다음에 우리가 작성한 URL에 연결시킬것이다.
# api 실행 코드를 여기에 작성
# 1. 쿨라이언트가 body에 보내준 json을 받아온다.
# body로 받는 데이터는 아래 함수를 사용한다.
# 클라이언트에서, body 부분에 작성한 json을
# 받아오는 코드
data = request.get_json()
user_id= get_jwt_identity()
# 받아온 데이터를 디비 저장하면 된다.
try:
# 데이터 insert
# 1. DB에 연결
connection = get_connection()
# 2. 쿼리문 만들기
query = '''insert into recipe
(name, description, cook_time, directions, user_id)
values
(%s,%s,%s,%s,%s);'''
record = (data['name'],data['description'], data['cook_time'],data['directions'], user_id )
# 3. 커서를 가져온다.
cursor = connection.cursor()
# 4. 쿼리문을 커서를 이용해서 실행한다.
cursor.execute(query,record)
# 5. 커넥션을 커밋해줘야 한다 => 디비에 영구적으로 반영하라는 뜻
connection.commit()
# 6. 자원 해제
cursor.close()
connection.close()
except Error as e:
print(e)
cursor.close()
connection.close()
return {"error": str(e)}, 503
return {"result":"success"},200
HTTP 상태코드
HTTPStatus.SERVICE_UNAVAILABLE |
= 503
일반적으로 그냥 숫자로만 사용한다.
터미널에서 python app.py로 서버 실행,
postman에서 데이터 입력 후에 send를 눌러준다.
상기 코드 실행 후에, 데이터가 잘 들어갔는지, mysql에서 확인한다.
데이터가 잘 입력 되었다.
POST관련 보충 설명: https://yeo0616.tistory.com/172
반응형
'BackEnd > Python-Flask' 카테고리의 다른 글
[백엔드] Flask: 터미널에 API 진행상황이 안나올 때 (0) | 2022.06.27 |
---|---|
[백엔드] Flask: recipe 프로젝트: API 조회/수정/삭제: GET/PUT/DELETE (0) | 2022.06.27 |
[백엔드] Flask: recipe 프로젝트: 준비/insert 순서 (0) | 2022.06.27 |
[백엔드] Flask: Python 으로 DB 삭제, delete (0) | 2022.06.26 |
[백엔드] Flask: Python 으로 DB 수정, Update (0) | 2022.06.26 |