[4주차]Flask - 20211227

김동영·2021년 12월 27일
0

Flask 과제

Flask를 활용한 간단한 web app을 구현하고,

Postman을 활용하여 get / post 테스트를 해보았다.

이를 좀더 구체화시키기 위해 다음과 같은 과제를 수행한다.

필수 과제

  1. 앞서 간단히 진행한 get / post 과제는 자원 관리 CRUD(Create, Read, Update, Delete) 중 Read 와 Create이다.

  2. 나머지 Update, Delete를 구현하라.

  • HTTP 메서드 PUT을 이용할 것
  • PUT /menu/<int:id> 목표 id에 해당하는 데이터를 갱신
  • DELETE /menu/<int:id> 목표 id에 해당하는 데이터를 삭제
  • @app.route()의 인자로 들어가는 경로에 다음과 같이 사용 가능
@app.route('/<name>') # URL에 <>를 붙임으로써 이를 함수의 인자로 대입 가능
def my_view_func(name):
	return name
Update
# PUT /menus | 자원의 특정 자료를 갱신한다.
@app.route('/menus/<int:id>', methods=['PUT'])
def update_menu(id):
    # 전달받은 자료를 자원의 특정 id의 자료로 갱신한다.
    request_data = request.get_json() # {"name" : ..., "price": ...}
    # menu 범위를 벗어나지 않을때만 갱신한다.
    if id >= 1 and id <= len(menus):
        menus[id - 1] = {
            "id": id,
            "name": request_data['name'],
            "price": request_data['price'],
        }
        return jsonify(menus)
    return "id does not exist"
Delete
# DELETE /menus | 자원의 특정 자료를 삭제한다.
@app.route('/menus/<int:id>', methods=['DELETE'])
def delete_menu(id):
    # 특정 id의 자료를 자원에서 삭제한다.
    for i, item in enumerate(menus):
        if item["id"] == id:
            del menus[i]
    return jsonify(menus)

보너스 과제 1.

새로운 menu를 추가할 때 id를 증가시킬 것

def create_menu(): # request가 JSON이라고 가정
    # 전달받은 자료를 menus 자원에 추가
    request_data = request.get_json() # {"name" : ..., "price": ...}
    new_menu = {
        "id" : len(menus)+1,
        "name" : request_data['name'],
        "price" : request_data['price'],
    }
    menus.append(new_menu)
    return jsonify(menus)

menu를 추가할 때, id를 기존 menus의 길이를 계산하여 더하는 것으로 구현

보너스 과제 2.

데이터베이스에 연동하여, 서버를 재시작해도 정보가 유지되도록 할 것

sql과 orm 중에, ORM(Object Relational Mapping)을 사용하기로 했다.

그 이유는 sql 질의를 잘 몰라도, 파이썬 문법만으로 데이터 베이스관리가 가능하기 때문에, 추가적인 학습이 필요하지 않은 orm을 선택했다.

  • 다음 시간에 완성할 예정
profile
오래 공부하는 사람

0개의 댓글