2015-02-11 72 views
0

我有一個使用GET /conversations請求填充用戶對話列表的Messenger應用程序。使用RESTful API監聽更新

下一步是讓它「偵聽」更新,以便標記已更新的對話並添加已創建的對話。

我應該使用相同的/conversations資源來獲取更新,還是應該爲此提供單獨的資源?也許,就像/conversationUpdates

回答

1

這取決於您是否要遵循RESTful約定。許多客戶端庫(如backbone和extjs)對使用URI聲明資源,然後使用不同的HTTP方法(GET,POST,DELETE等)對它進行深度支持。這有時可能會減少客戶需要做的工作,人們會很感激。

遵循約定也會讓你的api更少。毫無疑問,API的其他約定並不是每個領域空間都很好地用REST建模。

重新讀你的文章,我看到你想要一個只是獲得新帖的api。什麼構成新的?自上次客戶端稱爲終點以來的新增功能?在這種情況下,api可能會接受一個參數,例如最近收到的標識符(如果您使用的是自動增量字段或mongodb標識)。在這種情況下,您只需使用/conversations端點和一個額外的參數。

0

首先,我會堅持使用GET方法,因爲這正是要點:獲取數據。

至於資源名稱,我會用相同的,在查詢中進一步指定它,如/conversations?state=new。我的觀點是,資源本身仍然是一樣的,但你只需要它的一個子集。

但是,如果您計劃更新除會話之外的其他內容,則可以使用/updates/conversations,因爲在這種情況下,可以將更新視爲資源,其本身由會話組成。

+0

請您詳細說明建議方法的好處嗎? – 2015-02-11 20:49:37

+0

我不是REST Apis的專家。這僅僅是我的觀點,認爲將新X作爲新資源Y是牽強的。我只有在更新可以被認爲是新的「複雜」對象時才願意使用新資源,而不僅僅是此外,如果您的對話碰巧有'date'屬性,那麼使用查詢參數指定資源屬性的條件是傳統的REST。 – Silverspur 2015-02-11 20:54:20