我面临以下情况:
我有一个Post
对象,它通过多对多关系链接到Comment
对象。 Post
最多可以标记为Comment
,标记为“顶部”。
我需要公开一个API,提供列出帖子的功能(以及显示帖子的详细视图,但这个没问题)。问题是,Post
可能会有大量的Comment
s,我不会看到自己显示这种表示形式:
[{
title: "Lorem ipsum",
....
comments: [{
"author": "...",
"comment": ".....",
"top": false
}, ... // repeat a few thousand times
]
},...
]
但是,我知道此API的大多数消费者以后都希望直接显示最高评论,所以我想要公开这种表示:
[{
title: "Lorem ipsum",
....
topComments: [{
"author": "...",
"comment": ".....",
}, .... // repeat once more if needed
]
},...
]
这里我选择不显示所有可以通过/ posts / ID_OF_POST / comments访问的注释,但是我在“运行时”计算topComments
属性(它不在代码中的原始对象中) ),并显示标记为顶部
是否允许使用业务逻辑进行计算并公开在所表示的对象中不存在的属性?如果以后我想添加一个新的numberOfComments
计算属性,它还可以吗?
提前感谢您的回答
答案 0 :(得分:1)
是否允许使用业务逻辑进行计算
当然是。
并公开一个在表示的对象中不存在的属性?
我不会返回不同的表示,而是使用不同的资源来获取热门评论的收集资源。
GET /posts/{postId}/top-comments
将以完整列表中的相同形式返回注释数组,但只会包含最高注释。
您还可以在原始集合上使用过滤器:
GET /posts/{postId}/comments?top=true
答案 1 :(得分:1)