본문 바로가기
Archive/프로그래밍 언어

[Python] Flask (1) Flask란?, CRUD의 구현

by 다람이도토리 2021. 5. 7.

Flask란?

Flask는 파이썬에서 사용 가능한 웹 프레임워크이다. 

Flask 환경을 통해 '가볍게' 웹을 만들 수 있다.

Flask로 CRUD 구현하기

실제 과제로 구현한 코드와 함께 내용을 확인해보자.

(Full code)

from flask import Flask, jsonify, request

app = Flask(__name__)

menus = [
    {"id":1, "name":"Espresso", "price":3800},
    {"id":2, "name":"Americano", "price":4000},
    {"id":3, "name":"CafeLatte", "price":4500}
]
next_id = len(menus) + 1


# Home Directory
@app.route('/')
def hello_flask():
    return "Hello Flask! Ah! Hard!"

# Get /menus | 자료를 가지고 옴 (READ)
@app.route('/menus')
def get_menus():
    return jsonify({"menus" : menus})

# POST /menus | 자원 추가 (CREATE)
@app.route('/menus', methods=['POST'])
def post_menu(): # request가 JSON이라고 가정한다.
    # 전달받은 자료를 menus 자원에 추가함
    global next_id
    request_data = request.get_json()
    new_menu = {
        "id": next_id,
        "name": request_data['name'],
        'price': request_data['price']
    }
    next_id += 1
    menus.append(new_menu)
    return jsonify(new_menu)

@app.route('/menus/<int:id>', methods=['PUT'])
def put_menu(id):
    update_data = request.get_json()
    for menu in menus:
        if menu['id'] == id:
            menu['name'] = update_data['name']
            menu['price'] = update_data['price']
            return jsonify(menu)
    return jsonify("Failure! Index Error!")

@app.route('/menus/<int:id>', methods=['DELETE'])
def delete_menu(id):
    for i, menu in enumerate(menus):
        if menu['id'] == id:
            menus.pop(i)
            return jsonify(menus)
    return jsonify("Failure! Index Error!")

if __name__ == '__main__':
    app.run()


목표

우리가 하려는 것은, 메뉴판을 만드는 일이다.

구체적으로는, 클라이언트가 서버에다가 원하는 메뉴를 만들어달라, 지워달라, 변경해달라 요청하면 서버에서 처리하여 다시 클라이언트에게 돌려주는 서비스를 만드는 것이 목표이다.

 

API 만들기, CRUD란?

즉, 서버와 통신할 수 있는 방법을 우리가 정해줘야 하는 것이다.

즉 데이터를 받아와서 서버에서 처리하고 다시 넘겨주는 일련의 과정을 만들어야 한다. 기본적인 데이터 처리 기능은 줄여서 CRUD라고 표기한다.

- Create : 생성
- Read : 읽기
- Update : 갱신
- Delete : 삭제



JSON이란?

JSON은 자바스크립트의 객체[ 표기법으로, 속성(키)- 값 쌍으로 이루어진 데이터를 표현하기 위한 포맷이다.

JSON 형식은 key, value가 존재할 수 있고, key값이나 문자열은 쌍따옴표를 사용하여 표기해야 한다. 파이썬의  dict와 굉장히 유사한 표기법을 사용한다.