使用PYthon+ MongoDB 设计一个任务管理系统,提供添加任务,获取任务列表,查看任务详情,以及触发执行任务,删除任务和记录任务执行记录等接口
时间: 2023-12-02 21:03:55 浏览: 29
好的,我可以为您提供一个基于Python和MongoDB的任务管理系统设计。
首先,我们需要安装pymongo库,用于操作MongoDB数据库。您可以使用以下命令进行安装:
```
pip install pymongo
```
接下来,我们创建一个Python文件,命名为`app.py`,并编写以下代码:
```python
from flask import Flask, jsonify, request
from pymongo import MongoClient
from bson import ObjectId
app = Flask(__name__)
# MongoDB配置
client = MongoClient('mongodb://localhost:27017/')
db = client['task_manager']
tasks_collection = db['tasks']
# 添加任务
@app.route('/tasks', methods=['POST'])
def add_task():
name = request.json['name']
description = request.json['description']
status = request.json['status']
task = {"name": name, "description": description, "status": status}
tasks_collection.insert_one(task)
return jsonify({"message": "Task added successfully"}), 201
# 获取所有任务列表
@app.route('/tasks', methods=['GET'])
def get_tasks():
tasks = []
for task in tasks_collection.find():
tasks.append({
'id': str(task['_id']),
'name': task['name'],
'description': task['description'],
'status': task['status']
})
return jsonify({"tasks": tasks}), 200
# 获取特定任务的详细信息
@app.route('/tasks/<id>', methods=['GET'])
def get_task(id):
task = tasks_collection.find_one({"_id": ObjectId(id)})
if task:
return jsonify({
'id': str(task['_id']),
'name': task['name'],
'description': task['description'],
'status': task['status']
}), 200
else:
return jsonify({"message": "Task not found"}), 404
# 删除特定任务
@app.route('/tasks/<id>', methods=['DELETE'])
def delete_task(id):
result = tasks_collection.delete_one({"_id": ObjectId(id)})
if result.deleted_count == 1:
return jsonify({"message": "Task deleted successfully"}), 200
else:
return jsonify({"message": "Task not found"}), 404
# 触发执行特定任务
@app.route('/tasks/<id>/execute', methods=['PUT'])
def execute_task(id):
task = tasks_collection.find_one({"_id": ObjectId(id)})
if task:
tasks_collection.update_one({"_id": ObjectId(id)}, {"$set": {"status": "In Progress"}})
return jsonify({"message": "Task execution triggered successfully"}), 200
else:
return jsonify({"message": "Task not found"}), 404
if __name__ == '__main__':
app.run(debug=True)
```
这个任务管理系统使用MongoDB来存储任务信息,包含了以下几个接口:
1. `POST /tasks`:添加一个新的任务
2. `GET /tasks`:获取所有任务列表
3. `GET /tasks/<id>`:获取特定任务的详细信息
4. `DELETE /tasks/<id>`:删除特定任务
5. `PUT /tasks/<id>/execute`:触发执行特定任务
其中,任务的数据结构如下:
```python
{
"name": "Task 1",
"description": "This is task 1",
"status": "New"
}
```
您可以使用Postman或其他RESTful API测试工具来测试这些接口。