0

我面临以下情况:

我有一个Post对象,它通过多对多关系链接到一个Comment对象。aPost最多可以有 2Comment秒标记为“顶部”。

我需要公开一个提供列出帖子功能的 API(以及显示帖子的详细视图,但这个没问题)。问题是,aPost可以有大量的Comments,而我看不到自己显示这种表示形式:

[{
   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计算属性,它仍然可以吗?

预先感谢您的回答

4

2 回答 2

1

是否允许使用业务逻辑进行计算

当然是的。

并公开表示的对象中不存在的属性?

我不会返回不同的表示,而是使用不同的资源来获取热门评论的集合资源。

GET /posts/{postId}/top-comments

将以与完整列表中相同的形式返回一组评论,但仅包含最热门的评论。

您还可以对原始集合使用过滤器:

GET /posts/{postId}/comments?top=true
于 2016-12-07T13:01:42.827 回答
1

是的,它是允许的,它被命名为“瞬态”或“虚拟”属性。

使用 Symfony 框架,您可以这样

希望这可以帮助 !!

于 2016-12-07T13:26:25.360 回答