β

批量功能设计

小曹哥的博客 42 阅读

批量功能 :这里指需要对全部数据当中的一组数据进行查询、选择、修改、删除等操作的功能,也包括添加一组数据,即批量添加,这些操作统称 批量操作 。批量操作在软件系统当中应用很普遍,比如删除一组文件、删除符合特定条件的邮件、删除购物车里面选择的商品等等。而批量操作在后台管理系统当中尤其常见,比如博客管理后台、电商网站商家管理后台。

下面以 用户管理 功能为例,从两个方面谈下批量功能设计。

HTTP API 设计

一个典型的非批量操作 RESTful API 设计如下:

POST /api/v1/users

获取多个指定用户信息

比如根据用户ID来查询,假如只有几个或几十个,那把要查询的用户ID放到查询字符串里面到也没有技术上的问题。

POST /api/v1/userlists
["001","002","003"]

如果要符合 REST 规范来实现,需要两个请求,一个是和上面一样:

{
  "id": "0001"
}

然后利用该 ID 发送第二个请求:

PATCH /api/v1/users
[
  {
    "id": "001",
    "name": "zhangsan"
  },
  {
    "id": "002",
    "name": "lisi"
  }
]

PUT /api/v1/users
[
  {
    "id": "001",
    "name": "zhangsan",
    "gender": "male",
    "birthday": "2012-1-1"
  },
  {
    "id": "002",
    "name": "lisi",
    "gender": "male",
    "birthday": "2013-11-2"
  }
]

删除多个用户信息

同样的,下面实现方式不符合 REST 方式。

POST /api/v1/users
[
  {
    "name": "user1",
  },
  {
    "name": "user2",
  }
]

其返回值是:

{
"success": false,
"message": "",
"data": [
{
"name": "user1",
"success": false,
"message": "用户已存在"
},
{
"name": "user2",
"success": true,
"message": ""
}
]
}

如果只关心失败的结果,返回结果可以只包含创建失败的信息。

其他注意事项

界面交互设计

选择

全选功能 几乎是必需的,通过点击复选框来选择时,可以适当考虑点击的范围,便于用户点选。除了点选,还有其他选择方式,比如拖动方式、键盘结合方式。桌面操作系统经常利用 Ctrl Shift 键与鼠标结合操作, Ctrl + 点击 增量选择一个, Shift + 点击 选择连续的几个,不过键盘方式只适合高级用户使用,方式比较隐晦。

排序与搜索

有时数据比较多,又或者只是想加快选择的速度,这时候需要结合排序和搜索功能,快速缩减数据范围。

常见的一种展现多条数据的方式是列表,表格也可以看成是列表,在展现数据时,数据的默认排序很重要。既可以把用户关心的数据排到前面,也可以给出一种数据的规律,便于用户浏览。有时还需要用户可以选择排序方式和排序的数据列。

简单的只是一个搜索框来搜索所有数据列。如果要实现更精确的搜索,就需要实现单独列以及列的组合搜索。正则搜索功能是否实现,要看用户的属性,对于程序员可能比较熟悉易用,但普通用户还是慎用。

文本框和文件

即使通过排序或搜索缩减了数据范围,可能仍然不能满足某些用户或特定场景的需求。比如我已经获取到了一组数据的 IDs,这些 IDs 就是我想删除的用户。当然可以通过直接操作数据库来快速完成,但是操作数据库只是临时方案,不能作为长久之计。这时候可以提供一个文本输入框来让用户粘贴数据或者通过上传一个文件方式来完成,毕竟我们让用户选择只是为了得到一组 输入 数据。

另外通过文本框或文件方式,也可以快速实现添加或更新大量数据。

其他注意事项

批量功能 :这里指需要对全部数据当中的一组数据进行查询、选择、修改、删除等操作的功能,也包括添加一组数据,即批量添加,这些操作统称 批量操作 。批量操作在软件系统当中应用很普遍,比如删除一组文件、删除符合特定条件

作者:小曹哥的博客
原文地址:批量功能设计, 感谢原作者分享。

发表评论