通过REST API处理收集关系的最佳实践是什么?
这是我的第一个问题,所以在这里:)
我正在用Android开发消息应用程序,并使用由MongoDB数据库支持的Node.js Express后端。 我目前有两个集合模型: 用户和消息的消息架构如下所示:
var messageSchema = mongoose.Schema({ source: {type: Schema.Types.ObjectId, ref: 'User', required: true}, destination: {type: Schema.Types.ObjectId, ref: 'User', required: true}, text: {type: String, required: true} });
我的问题是我是否应该通过API返回一个消息对象:
{source: <objectId>, destination: <ObjectId>, text: 'Hello World'}
或者如:
{source: {username:'David', password:'abcd'}, destination: {username:'Jeff', password: 'aaaa'}, text: 'Hello World'}
换句话说: 应该在服务器端填充/parsing引用的字段,还是应该由客户端决定?
谢谢,欢呼!
我的两分钱:
ObjectId
是数据库的人工制品,而不是应用程序。 揭示这些给用户有时(并不总是)一种气味。 无论它是否对您和您的领域的知识。
至于什么是最好的,这取决于你的用例。 有没有用户只想知道ID的用例? 我想他们至less会想要一个或另一个。 如果是这样的话,我会实现两个资源,一个用于获取源代码和一个用于获取目的地。
如果用户总是希望同时拥有这两者,或者希望同时拥有大部分时间,则可以返回两者,或者再次添加提供此function的其他资源。
如果你们两个都回来了,你们会过滤一下吗? 某种types的标识符,分页还是只能返回数据库中的所有内容?