diff --git a/06.Line-bot-fly-flask/app.py b/06.Line-bot-fly-flask/app.py index 3a5627d..6b6a4d7 100644 --- a/06.Line-bot-fly-flask/app.py +++ b/06.Line-bot-fly-flask/app.py @@ -78,12 +78,13 @@ def handle_message(event): # 建立一個名為 `tasks` 的資料表,用來儲存待辦事項 tasks = [ { + 'id': 0, 'title': 'Python程式設計備課', 'description': '撰寫 API DEMO', 'done': False - }, { + 'id': 1, 'title': 'Pytest', 'description': '增加程式單元測試', 'done': False @@ -101,40 +102,39 @@ def get_tasks(): @app.route('/tasks/', methods=['GET']) def get_task(task_id): - task = [ task for task in tasks if task['id'] == task_id] - if len(task) == 0: - abort(404) - return jsonify({'task': task[0]}) + for task in tasks: + if task['id'] == task_id: + return jsonify({'task': task}) + abort(404) @app.route('/tasks', methods=['POST']) def add_task(): # 取得使用者傳送的待辦事項 - task = request.json + task = request.json or {} + next_id = tasks[-1]['id'] + 1 if tasks else 0 + task['id'] = next_id tasks.append(task) - return jsonify({'tasks':tasks}), 201 + return jsonify({'tasks': tasks}), 201 @app.route('/tasks/', methods=['PUT']) def update_task(task_id): # 取得使用者傳送的更新資料 - task = request.json - - # 檢查待辦事項是否存在 - if task_id < 0 or task_id >= len(tasks): - return jsonify({'message': 'task not found'}), 404 + new_task = request.json or {} - # 更新待辦事項 - tasks[task_id] = task - return jsonify({'message': f'task_id: {task_id} updated'}), 200 + for i, t in enumerate(tasks): + if t['id'] == task_id: + new_task['id'] = task_id + tasks[i] = new_task + return jsonify({'message': f'task_id: {task_id} updated'}), 200 + return jsonify({'message': 'task not found'}), 404 @app.route('/tasks/', methods=['DELETE']) def delete_task(task_id): - # 檢查待辦事項是否存在 - if task_id < 0 or task_id >= len(tasks): - return jsonify({'message': 'task not found'}), 404 - - # 刪除待辦事項 - tasks.pop(task_id) - return jsonify({'message': 'task deleted'}), 200 + for i, t in enumerate(tasks): + if t['id'] == task_id: + tasks.pop(i) + return jsonify({'message': 'task deleted'}), 200 + return jsonify({'message': 'task not found'}), 404 #################################################