30 Wed

TIL

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค AI ์Šค์ฟจ 1๊ธฐ] 4์ฃผ์ฐจ DAY 1

DAY 1 ์‹ค์Šต

flask์—์„œ CRUD ๊ตฌํ˜„ํ•˜๊ธฐ

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

Last updated

Was this helpful?