综合案例
1. 信源熵计算
要求:
- 创建 entropy 仓库
- 编写命令行脚本程序,完成信源熵的计算
- 信源熵的计算公式:
H(p) = -p1*log(p1, 2) - p2*log(p2, 2) - ... - pn*log(pn, 2)
- p1, p2, ..., pn 都是概率,其中,
0 <= pi <= 1 and p1 + p2 + ... + pn = 1
- 要求支持命令行参数输入概率
- 命令行参数输入概率要支持两种形式:逗号分隔和空格分隔
- 命令行参数输入形式不能混合,即:同时用逗号和空格分隔,视为错误输入
- 无命令行参数或者命令行参数不正确时,可以交互输入概率
- 要求对输入概率进行数据合法性验证
- 数据非法时,要有明确的错误提示信息
- 对程序中的通用模块进行封装
- 对程序中的通用模块用 Mocha 做单元测试,用 Istanbul 做代码覆盖率测试
命令行程序的交互效果,请参考下面的屏幕截图:
2. 待办事项
待办事项 web 应用的服务器端,应用形态:HTTP API。
2.1. 用户接口
登录验证
- 功能描述:提供登录信息,由服务端验证身份是否合法。如果合法,发放后续访问的令牌。否则,给出错误提示。
- 接口地址:POST
/users/login
- 请求参数:
字段 | 类型 | 是否必填 | 说明 | 备注 |
---|
email | string | 是 | | |
password | string | 是 | |
字段 | 类型 | 说明 | 备注 |
---|
code | number | 状态码 | 零为正常,非零代表错误 |
msg | string | 状态信息 | 错误描述 |
count | number | 记录条数 | 此字段无用 |
data | string | 具体数据 | 如果身份验证成功,这个数据是后续访问的令牌 |
注册账户
- 功能描述:注册账户。
- 接口地址:POST
/users/signup
- 请求参数:
字段 | 类型 | 是否必填 | 说明 | 备注 |
---|
email | string | 是 | | |
password | string | 是 | |
字段 | 类型 | 说明 | 备注 |
---|
code | number | 状态码 | 零为正常,非零代表错误 |
msg | string | 状态信息 | 错误描述 |
count | number | 记录条数 | 此字段无用 |
data | string | 具体数据 | 此字段无用 |
2.2. 待办事项接口
获取待办事项
- 功能描述:获取登录当前登录用户的所有待办事项。
- 接口地址:GET
/tasks/
- 请求参数:
字段 | 类型 | 是否必填 | 说明 | 备注 |
---|
token | string | 是 | 身份验证的令牌 | token 在 HTTP 请求头中 |
字段 | 类型 | 说明 | 备注 |
---|
code | number | 状态码 | 零为正常,非零代表错误 |
msg | string | 状态信息 | 错误描述 |
count | number | 记录条数 | |
data | string | 待办事项数组 |
添加待办事项
- 功能描述:添加待办事项。
- 接口地址:POST
/tasks/
- 请求参数:
字段 | 类型 | 是否必填 | 说明 | 备注 |
---|
token | string | 是 | 身份验证的令牌 | token 在 HTTP 请求头中 |
content | string | 是 | 待办事项内容 | 可以是空字符串 |
folder_id | number | 否 | 待办事项所属文件夹 id | 可以为 null |
字段 | 类型 | 说明 | 备注 |
---|
code | number | 状态码 | 零为正常,非零代表错误 |
msg | string | 状态信息 | 错误描述 |
count | number | 记录条数 | 此字段无用 |
data | string | 具体数据 | 此字段无用 |
修改待办事项
- 功能描述:修改待办事项的内容或者所属的文件夹或者删除状态,一次操作只能修改三者之一。
- 接口地址:PUT
/tasks/:id
- 请求参数:
字段 | 类型 | 是否必填 | 说明 | 备注 |
---|
token | string | 是 | 身份验证的令牌 | token 在 HTTP 请求头中 |
id | number | 是 | 待修改待办事项的 id | |
content | string | 否 | 新的待办事项内容 | 可以是空字符串 |
folder_id | number | 否 | 待办事项所属文件夹 id | folder_id 为零,则待办事项不属于任何文件夹 |
recycle | boolean | 否 | 是否回收待办事项 | 回收待办事项会取消待办事项的删除状态 |
字段 | 类型 | 说明 | 备注 |
---|
code | number | 状态码 | 零为正常,非零代表错误 |
msg | string | 状态信息 | 错误描述 |
count | number | 记录条数 | 此字段无用 |
data | string | 具体数据 | 此字段无用 |
删除待办事项
- 功能描述:删除待办事项。支持两种删除模式:硬删除(永久删除)和软删除。一次操作只删除一个待办事项,不支持批量删除。
- 接口地址:DELETE
/tasks/:id?permanent=true|false
- 请求参数:
字段 | 类型 | 是否必填 | 说明 | 备注 |
---|
token | string | 是 | 身份验证的令牌 | token 在 HTTP 请求头中 |
id | number | 是 | 待删除待办事项的 id | |
permanent | boolean | 是 | 是否永久删除 | permanent = true,永久删除一条待办事项 permanent = false,并不真正删除待办事项,而是设置该待办事项的 deletedTime 字段 |
字段 | 类型 | 说明 | 备注 |
---|
code | number | 状态码 | 零为正常,非零代表错误 |
msg | string | 状态信息 | 错误描述 |
count | number | 记录条数 | 此字段无用 |
data | string | 具体数据 | 此字段无用 |
2.3. 文件夹接口
获取文件夹
- 功能描述:获取登录当前登录用户的所有文件夹。
- 接口地址:GET
/folders/
- 请求参数:
字段 | 类型 | 是否必填 | 说明 | 备注 |
---|
token | string | 是 | 身份验证的令牌 | token 在 HTTP 请求头中 |
字段 | 类型 | 说明 | 备注 |
---|
code | number | 状态码 | 零为正常,非零代表错误 |
msg | string | 状态信息 | 错误描述 |
count | number | 记录条数 | |
data | string | 文件夹数组 |
添加文件夹
- 功能描述:添加文件夹。
- 接口地址:POST
/folders/
- 请求参数:
字段 | 类型 | 是否必填 | 说明 | 备注 |
---|
token | string | 是 | 身份验证的令牌 | token 在 HTTP 请求头中 |
item | string | 是 | 文件夹名称 | 不可以是空字符串 |
字段 | 类型 | 说明 | 备注 |
---|
code | number | 状态码 | 零为正常,非零代表错误 |
msg | string | 状态信息 | 错误描述 |
count | number | 记录条数 | 此字段无用 |
data | string | 具体数据 | 此字段无用 |
修改文件夹
- 功能描述:修改文件夹的名称。
- 接口地址:PUT
/folders/:id
- 请求参数:
字段 | 类型 | 是否必填 | 说明 | 备注 |
---|
token | string | 是 | 身份验证的令牌 | token 在 HTTP 请求头中 |
id | number | 是 | 待修改文件夹的 id | |
item | string | 是 | 新的文件夹名称 | 不可以是空字符串 |
字段 | 类型 | 说明 | 备注 |
---|
code | number | 状态码 | 零为正常,非零代表错误 |
msg | string | 状态信息 | 错误描述 |
count | number | 记录条数 | 此字段无用 |
data | string | 具体数据 | 此字段无用 |
删除文件夹
- 功能描述:删除文件夹,真正删除文件夹,但是不级联删除此文件夹下的待办事项。此文件夹下的所有待办事项的 folder_id 置为 null。
- 接口地址:DELETE
/folders/:id
- 请求参数:
字段 | 类型 | 是否必填 | 说明 | 备注 |
---|
token | string | 是 | 身份验证的令牌 | token 在 HTTP 请求头中 |
id | number | 是 | 待删除文件夹的 id |
字段 | 类型 | 说明 | 备注 |
---|
code | number | 状态码 | 零为正常,非零代表错误 |
msg | string | 状态信息 | 错误描述 |
count | number | 记录条数 | 此字段无用 |
data | string | 具体数据 | 此字段无用 |