2015-02-11 82 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