TodoList日志(1)
TodoList设计
这是创新实践课程的作业,做一个简单的TodoList应用,借这个机会把整个业务开发的流程熟悉一遍。
需求分析
功能调研
TODO 应用通常是一个帮助用户管理日常任务的工具,用户可以在其中创建、查看、编辑、删除任务,并通过标记任务状态来追踪进度。常见的功能包括:
- 创建任务:允许用户输入任务标题、描述、优先级、截止日期等信息。
- 查看任务:展示所有任务,并按状态(如已完成、未完成)进行过滤。
- 编辑任务:让用户修改任务的内容、截止日期等。
- 删除任务:删除已不再需要的任务。
- 标记任务完成/未完成:允许用户标记任务的完成状态,帮助跟踪进度。
此外,一些TODO应用还可能包括任务提醒、优先级设置、任务分类、搜索功能等扩展功能。
核心功能
这些是项目的基本功能,优先实现基本功能,扩展功能之后再说。
- 创建任务:用户可以添加新的任务,任务包含标题、描述和截止日期(可选)。任务可以标记为已完成或未完成。
- 输入框:任务标题、任务描述、截止日期。
- 按钮:保存、取消。
- 查看任务:用户可以查看所有任务,并过滤选项:全部任务、未完成任务、已完成任务。。
- 列表展示:任务标题、描述、状态、截止日期。
- 过滤选项:全部任务、未完成任务、已完成任务。
- 编辑任务:用户可以修改已创建的任务,包括修改标题、描述、截止日期。
- 编辑按钮:任务列表中的每个任务旁边都有一个编辑按钮,复用创建窗口。
- 删除任务:用户可以删除不再需要的任务。
- 删除按钮:任务列表中的每个任务旁边都有一个删除按钮,用户需确认是否删除。
- 标记完成/未完成:用户可以将任务标记为“完成”或“未完成”状态。
- 完成按钮:标记任务状态的交互元素。
原型设计
web网页版 Todo List 主页面 左边是导航栏 右边是任务列表,每条任务包含任务标题,距离截止的时间,完成圆圈,编辑按钮,删除按钮
任务列表,一条一条的任务,包含任务标题,距离截止的时间,完成圆圈,编辑按钮,删除按钮
搜索框(请输入想查找的任务)
新增任务的加号按钮
TODO 应用 API 文档
1. 创建任务
- 请求类型:
POST
- 请求路径:
/api/tasks
- 请求参数:
title
(必填):任务标题(字符串,最大长度 255)description
(可选):任务描述(字符串)dueDate
(可选):任务截止日期(ISO 8601 格式字符串,如:2024-12-25T12:00:00Z
)status
(可选):任务状态,默认值为pending
(pending
或completed
)priority
(可选):任务优先级(字符串,可选值:low
,medium
,high
)
- 请求示例:
{ |
响应:
成功响应:
- 状态码:
201 Created
- 响应体:
{
"id": 1,
"title": "完成TODO应用API文档",
"description": "编写详细的API文档,包含每个功能的请求和响应示例。",
"dueDate": "2024-12-10T12:00:00Z",
"status": "pending",
"priority": "high",
"createdAt": "2024-11-30T10:00:00Z",
"updatedAt": "2024-11-30T10:00:00Z"
}- 状态码:
失败响应:
- 状态码:
400 Bad Request
- 响应体:
{
"error": "Title is required"
}- 状态码:
2. 查看任务
- 请求类型:
GET
- 请求路径:
/api/tasks
- 请求参数:
status
(可选):任务状态过滤选项,值为all
(所有任务),pending
(未完成任务),completed
(已完成任务)。默认值为all
。priority
(可选):任务优先级过滤选项,值为low
、medium
、high
,支持多选。
- 请求示例:
GET /api/tasks?status=all&priority=high |
响应:
成功响应:
- 状态码:
200 OK
- 响应体:
[
{
"id": 1,
"title": "完成TODO应用API文档",
"description": "编写详细的API文档,包含每个功能的请求和响应示例。",
"dueDate": "2024-12-10T12:00:00Z",
"status": "pending",
"priority": "high",
"createdAt": "2024-11-30T10:00:00Z",
"updatedAt": "2024-11-30T10:00:00Z"
}
]- 状态码:
失败响应:
- 状态码:
400 Bad Request
- 响应体:
{
"error": "Invalid filter options"
}- 状态码:
3. 编辑任务
- 请求类型:
PUT
- 请求路径:
/api/tasks/{id}
- 请求参数:
title
(可选):任务标题description
(可选):任务描述dueDate
(可选):任务截止日期status
(可选):任务状态(pending
或completed
)priority
(可选):任务优先级(low
、medium
、high
)
- 请求示例:
{ |
响应:
成功响应:
- 状态码:
200 OK
- 响应体:
{
"id": 1,
"title": "更新TODO应用API文档",
"description": "更新API文档,包含最新的功能描述。",
"dueDate": "2024-12-12T12:00:00Z",
"status": "pending",
"priority": "medium",
"createdAt": "2024-11-30T10:00:00Z",
"updatedAt": "2024-12-01T10:00:00Z"
}- 状态码:
失败响应:
- 状态码:
400 Bad Request
- 响应体:
{
"error": "Invalid task ID"
}- 状态码:
4. 删除任务
- 请求类型:
DELETE
- 请求路径:
/api/tasks/{id}
- 请求参数:无(通过 URL 提供任务的
id
) - 请求示例:
DELETE /api/tasks/1 |
响应:
成功响应:
- 状态码:
204 No Content
- 响应体:无
- 状态码:
失败响应:
- 状态码:
404 Not Found
- 响应体:
{
"error": "Task not found"
}- 状态码:
5. 标记任务完成/未完成
- 请求类型:
PATCH
- 请求路径:
/api/tasks/{id}/status
- 请求参数:
status
(必填):任务的新状态,值为pending
或completed
。
- 请求示例:
{ |
响应:
成功响应:
- 状态码:
200 OK
- 响应体:
{
"id": 1,
"title": "完成TODO应用API文档",
"description": "编写详细的API文档,包含每个功能的请求和响应示例。",
"dueDate": "2024-12-10T12:00:00Z",
"status": "completed",
"priority": "high",
"createdAt": "2024-11-30T10:00:00Z",
"updatedAt": "2024-11-30T10:00:00Z"
}- 状态码:
失败响应:
- 状态码:
400 Bad Request
- 响应体:
{
"error": "Invalid status value"
}- 状态码:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Youndry's Blog!