2014-05-24 86 views
0

的我有两个型号,conversationsmessages,第一存储会话信息(与数据透视表conversation_user了许多一对多的关系),而第二只存储的信息,作者的ID,和conversation_id(使用数据透视表message_user将每条消息链接到每个用户,以便每个用户都可以将消息标记为已读/未读或存档/删除)。RESTful的实现多种模式

现在,为了创建一个新的对话,我可以做两件不同的事情,我不知道哪个更好。显然有一种形式可以输入所有收件人以及要发送的初始消息(假设用户本身将确保此类会话不存在,否则他们只会打开对话):

选项1

POST调用/conversations与所有参与创建一个新的谈话user_idconversation_id被送回,另一个POST调用/messagesconversation_id,user_id(作者)和message

选项2

发送的所有数据/conversations,并从操作中,一旦会话已经建立,使内部电话/messages创建消息。

选项2比较容易,但我觉得选项1更RESTful的每个动作只对自己负责。

什么是更好的方法?

回答

0

选项1更加模块化,对于直接调用接口可能更好。但是,在这种情况下,它需要在整个网络上进行两次呼叫,这意味着它可能是错误的解决方案 - 在服务器上进行第一个消息呼叫而不是第二次网络往返会更有效。

选项2中的呼叫可能更准确地描述为启动对话,而不是仅添加对话,因为它还会添加消息。这也许可以说明为什么它看起来不那么严格安宁。然而,这也是一个很好的例子,说明为什么大多数真正的“宁静”界面现在都不是严格平静的。