使用 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 開髮變得非常令人興奮!