我有两个模型,conversations
和messages
,第一个存储会话信息(与多对多关系的数据透视表conversation_user
),第二个只是存储消息,作者的id和conversation_id(使用数据透视表message_user
将每条消息链接到每个用户,以便每个消息都可以将消息标记为已读/未读或存档/删除。
现在,要创建一个新的对话,我可以做两件事,我不知道哪个更好。显然,您可以键入所有收件人的表单,以及要发送的初始邮件(假设用户本身将确保此类会话尚未存在,否则他们只会打开会话):
选项1
POST
与所有/conversations
相关的user_id
致电创建新会话。 conversation_id
被发回,POST
与/messages
,conversation_id
(作者)和user_id
进行message
次通话
选项2
将所有数据发送至/conversations
,并在操作中,创建对话后,拨打内部电话/messages
以创建消息。
选项2 更容易,但我觉得选项1 更加RESTful,因为每个操作只对自己负责。
什么是更好的方法?
答案 0 :(得分:0)
选项1更模块化,对于直接调用接口可能更好。但是,在这种情况下,它需要通过网络进行两次调用,这表明它可能是错误的解决方案 - 仅在服务器上进行第一次消息调用效率要高得多,而不是需要第二次网络往返。 / p>
选项2中的呼叫可能更准确地描述为发起会话,而不仅仅是添加会话,因为它还会添加消息。这也许可以说明为什么它看起来不那么严格了。然而,它也是一个很好的例子,说明为什么大多数真实的“宁静”界面最近并没有严格的安抚。