from flask import Flask, jsonify, request
from queue import PriorityQueue
app = Flask(__name__)
menus = [
{"id":1, "name":"Espresso", "price":3800},
{"id":2, "name":"Americano", "price":4100},
{"id":3, "name":"CafeLatte", "price":4600},
]
id_list = PriorityQueue()
for available_id in range(4, 10000): id_list.put(available_id)
# @ = python decorator
# => ๋ค์ ์ฃผ์๋ฅผ ์
๋ ฅ๋ฐ์์ ๋ ์๋ ํจ์๋ฅผ ์คํํ๋ผ๋ ๋ป
@app.route('/')
def hello_flask():
return "Hello World!"
# GET /menus | ์๋ฃ๋ฅผ ๊ฐ์ง๊ณ ์จ๋ค.
@app.route('/menus') # GET์ methods ์๋ต ๊ฐ๋ฅ
def get_menus():
return jsonify({"menus" : menus})
# POST /menus | ์๋ฃ๋ฅผ ์์์ ์ถ๊ฐํ๋ค.
@app.route('/menus', methods=['POST'])
def create_menu():
# ์ ๋ฌ ๋ฐ์ ์๋ฃ๋ฅผ menus ์์์ ์ถ๊ฐ
# request๊ฐ JSON์ด๋ผ๊ณ ๊ฐ์
request_data = request.get_json() # {"name" : ..., "price" : ...}
using_id = id_list.get()
new_menu = {
"id" : using_id,
"name" : request_data['name'],
"price" : request_data['price'],
}
menus.append(new_menu)
return jsonify(new_menu)
@app.route('/menus/<int:id>', methods=['PUT'])
def update_menu(id):
for idx, menu in enumerate(menus):
if id in menu.values():
request_data = request.get_json()
menus[id-1]["name"] = request_data['name']
menus[id-1]["price"] = request_data['price']
return jsonify(menus[id-1])
return "not existed id"
@app.route('/menus/<int:id>', methods=['DELETE'])
def delete_menu(id):
for idx, menu in enumerate(menus):
if id in menu.values():
id_list.put(menus[idx]["id"])
menus.pop(idx)
return "delete successfully"
return "not existed id"
if __name__ == '__main__':
app.run()
Flask๋ฅผ ์ด์ฉํด์ CRUD๋ฅผ ๊ตฌํํ๋ค. ์ฌ๊ธฐ์ ์ธ๊ธํ ์ ์ id์ ์์ฑ๊ณผ ์ญ์ ์ธ๋ฐ, ๋งค๋ฒ id๊ฐ 4๋ก ๊ณ ์ ๋๋ ๋ฌธ์ ๊ฐ ์์๋ค. (๋ณด๋์ค ๊ณผ์ 1์ ํด๋น) ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํ๋ค. ์ญ์ ๋๋ ๋ฒํธ๋ ์ด ํ์ ์ถ๊ฐ๋๋ฉฐ ์๋ก์ด ๋ฒํธ๋ฅผ ๋ฐ๊ธ๋ฐ์ ๋๋ ์์ ์๋ถํฐ ๋ฐ์ ์ ์๋๋ก.
์์ค์ฝ๋๋ฅผ ์์ ํ ๋๋ง๋ค ๋งค๋ฒ flask๋ฅผ ๋ค์ ์์ํ์ด์ผ ํ๋๋ฐ, ๋ค์๊ณผ ๊ฐ์ ์ค์ ์ ๊ฑฐ์น๋ฉด ์๋์ผ๋ก flask๊ฐ ๋ฆฌ๋ถํ
๋๋ค.
set FLASK_ENV=development
flask run