使用 WordPress REST API 对类似 Trello 的应用程序进行原型设计

已发表: 2017-02-03

自 WordPress 发布以来,我们一再吹捧 WordPress 的 REST API,作为该平台迈向新时代的一步。 在这篇文章中,我们将利用过去几周学到的所有知识,使用一个示例来展示 WordPress REST API 的强大和通用性。

由于不同语言之间的互操作性是 REST 的核心,我们将设计一个原型,类似 Trello 的应用程序,使用良好的 'ole WordPress 分类法和帖子,但要有所改变! 通过这种方式,我们希望演示如何使用 WordPress 作为开发平台。

Trello 是使用看板范式的成功项目管理应用程序,最初由丰田在 1980 年代推广。 项目表示为board ,其中包含填充有与任务相对应卡片的列。 卡片从一列移动到下一列,直到它们处于完成状态(例如,从待办事项做事完成)。 这种流动称为价值流。 看板背后的两个关键思想是 a) 可视化您的工作,以及 b) 限制您当前正在进行的工作。 在 Trello 的情况下,工作是使用图形卡可视化的。 列也可以具有最大容量,这意味着您可以在列中放置特定数量的任务,仅此而已。 例如,下面的Doing列的容量为 2。

应用程序设计

我们将设计一个最小的、简单的看板范式版本作为概念验证。 主要功能如下:

  1. 用户可以创建/更新/删除新列。
  2. 用户可以创建/更新/删除特定列下的新卡。

关于如何实现这一切的基本思想,使用 REST API 非常简单:

  • 看板列表示为 WordPress类别
  • 列容量可以在类别描述中放置为整数
  • 看板卡作为分配给某个类别的帖子
  • 将卡片从一列移到另一列意味着只需更改帖子的相应类别

遵循快速原型设计的“早期和经常迭代”的想法,下面介绍的看板 API 只是草稿。 这些功能是从前面列出的两个主要功能以及列到类别和卡片到帖子的 WordPress 资产映射中推断出来的。 毫无疑问,一旦原型的实际实现开始,新的和具有挑战性的问题就会出现,但以下草稿足以让我们开始!

看板列 API

下面的列表记录了将操作看板列的函数及其参数类型。 列将表示为 WordPress 类别,其容量编号将添加到类别描述中。 这个列表没有记录任何返回值,因为对于这个原型,来自 WordPress 的 JSON 响应对象就足够了。

使用 Pressidium 托管您的网站

60 天退款保证

查看我们的计划

但是,所有函数都将返回 true 或 false 以表示操作是否成功完成或出现问题。 在后一种情况下,可以在 JSON 响应对象中找到真正的原因,但通常不会为概念验证原型提供真正的错误控制。

• create_new_col(cname:string, cap:int)
创建一个名为cname的新看板列,其中包含一个表示容量的整数上限

WordPress API 资源:创建新类别

这将创建一个新的类别,然后将容量整数添加到类别描述中。

change_col_name(旧名称:字符串,新名称:字符串)
将看板列的名称从oldname 更改newname

WordPress API 资源:编辑类别

这只会更改类别名称。

change_col_cap(newcap:int )
将列容量更改为newcap。

WordPress API 资源:编辑类别

这将更改相应类别的描述以添加新的容量编号。

delete_col(列名:字符串)
删除名为colname 的列。

WordPress API 资源:删除类别

这只是删除了与该列对应的类别。 通过这样做,您将有效地“孤立”该列下的卡片。 由您决定如何实施此删除。 例如,a)删除一列意味着删除该列下的所有内容或 b)“软”删除,可能将其下的卡重命名为 _del_<category>,以便您将来可以取消删除它们。

看板卡 API

下面的列表是相同的,但对于看板卡。 卡片将被表示为 WordPress 帖子,有效地使用帖子的标题来描述要完成的任务。 帖子的内容可以用作笔记的附加容器。

• create_new_card(cname:string)

创建一个名为cname 的新卡。

这将创建一个没有内容的新帖子,但由于它不属于任何类别,因此用户不应该看到它。

• create_new_card(cname:string, c:string)

创建一个标题为cname和内容c 的新帖子。

同上,但卡片也是用内容创建的。

• create_new_card(cname:string, cont:string, colname:string)

在类别colname下创建一个标题为cname 、内容cont的新帖子。

WordPress API 资源:创建新帖子

• add_card_col(cname:string, colname:string)

将名称为cname的卡添加到名称为colname 的列中。

WordPress API 资源:编辑帖子

• move_card_col(cname:string, colname:string)

在名为colname的列下移动名称为cname的卡片。 这应该在添加新类别之前删除帖子的旧类别。

WordPress API 资源:编辑帖子

• delete_card(cname:string)
删除名称为cname 的卡。

WordPress API 资源:删除帖子

这是否会执行破坏性删除,具体取决于您是否在 WordPress 博客中启用了垃圾箱。

数据的完整性

现在我们已经将我们的函数映射到 WordPress API 调用和资产,我们需要确保我们的数据保持一致。 例如,容量为 2 的看板列不能容纳超过 2 张卡片。 一张卡片不能同时在两列中。 当卡片移动到另一列时,需要将其从原来的位置删除。 然而,WordPress 对这些约束一无所知,因此我们的应用程序需要在每次写入操作中检查并强制执行它们。

由于这是一个原型,并非所有的边缘情况在设计阶段都是显而易见的。 这些在每个功能的执行过程中都会不可避免地弹出。

进一步的工作

到目前为止,我们只讨论了以不同方式使用 WordPress 资源驱动看板应用程序的 API。 如果我们的原型仅由一堆后端 API 组成,而没有人们可以实际使用的前端,那么它就会严重不足。 在这里,我们再次看到了 REST API 的多功能性,因为没有人说你应该如何去做。 你可以使用 Bootstrap 之类的东西,或者用 Java 编写一个好的 'ole GUI; 您可以使用的内容实际上没有限制。

我们的原型也只支持一个看板,即一个项目,链接到您的 WordPress 实例。 这对于概念验证来说可能是可以接受的,但对于最终产品来说显然是不可接受的。 一种解决方案是以一种不同的、更有效的方式将看板概念映射到 WordPress 分类法,一种支持多个看板板和更多功能(例如团队协作)的方式。

WordPress 开发变得非常令人兴奋!