0911
4주차-Day1) Flask를 Flask 답게
메뉴 관리 CRUD 구현하기
from flask import Flask, jsonify, request
app = Flask(__name__)
menus = [
{"id": 1, "name": "Espresso", "price":3800},
{"id": 2, "name": "Americano", "price":4100},
{"id": 3, "name": "CafeLatte", "price":3600}
]
@app.route('/')
def hello_flask():
return "Hello World!"
# GET /menus | 자료를 가지고 온다
@app.route('/menus')
def get_menus():
return jsonify({"menus" : menus})
# POST /menus | 자료를 자원에 추가한다
@app.route('/menus', methods=['POST'])
def create_menu(): # Request가 JSON이라고 가정
# 전달받은 자료를 menus 자원에 추가
request_date = request.get_json() # {"name" : ..., "price" : ...}
new_menu = {
"id" : 4,
"name" : request_date['name'],
"price" : request_date['price']
}
menus.append(new_menu)
return jsonify(new_menu)
# menu에 있는 해당 id 값이 menu에 적재된다
@app.route('/menus/<int:id>', methods=['PUT'])
def update_menu(id):
menus.append(menus[id-1])
return jsonify(menus)
# menu에 있는 해당 id 값이 menu에서 삭제된
@app.route('/menus/<int:id>', methods=['DELETE'])
ddef delete_men(id):
for i in range(len(menus)):
if menus[i].get('id') == id:
menus.pop(i)
return jsonify(menus)
if __name__ == '__main__':
app.run()
ID 값 자연스럽게 증가
from flask import Flask, jsonify, request
app = Flask(__name__)
menus = [
{"id": 1, "name": "Espresso", "price":3800},
{"id": 2, "name": "Americano", "price":4100},
{"id": 3, "name": "CafeLatte", "price":3600}
]
@app.route('/')
def hello_flask():
return "Hello World!"
# GET /menus | 자료를 가지고 온다
@app.route('/menus')
def get_menus():
return jsonify({"menus" : menus})
# POST /menus | 자료를 자원에 추가한다
@app.route('/menus', methods=['POST'])
def create_menu(): # Request가 JSON이라고 가정
# 전달받은 자료를 menus 자원에 추가
request_date = request.get_json() # {"name" : ..., "price" : ...}
new_menu = {
"id" : len(menus)+1, # 메뉴 목록 개수+1 번째로 새로운 메뉴 추가
"name" : request_date['name'],
"price" : request_date['price']
}
menus.append(new_menu)
return jsonify(new_menu)
@app.route('/menus/<int:id>', methods=['PUT'])
def update_menu(id):
menus.append(menus[id-1])
return jsonify(menus)
@app.route('/menus/<int:id>', methods=['DELETE'])
def delete_men(id):
menus.pop(id-1)
return jsonify(menus)
if __name__ == '__main__':
app.run()