假设我有一个网站,我展示了人们的艺术作品,食谱和期刊(这个列表可能会增长)。我希望人们能够评论,例如,标记等所有这些。
我不是在寻找数据库架构。我正在使用ASP.net Web API,但该平台应该是无关紧要的。我正在传递一个授权持有者标题,以识别想要喜欢,评论,标记等用户工作的用户。
我目前有两个“方案”,但我不确定每个方案的优点/缺点是什么,所以我无法做出正确的决定。
第一个看起来像这样:
POST api/<entity>/{id}/<action>
例如,api / journal / 21793 / like,或者api / recipe / 1005 / comment。当然,每个动作都有适当的主体,包括存储到后端的信息。
但是,以这种方式实现它需要我们编写entityCount x interactionTypeCount函数(动作),虽然API调用很友好,但这非常繁琐。第二个API方案如下所示:
POST api/<action>
例如,api / like,api / comment - 是的,没有办法描述URL中哪个对象类型和对象类型的哪个记录。所以,如果我们对所提到的食谱发表评论,我们会打电话:
POST api/comment
{"id":"1005", "objectType":"recipe", "comment":"This was excellent!"}
这样,我们只调用1个API来评论我们系统中的任何内容。因此,每个POST api /函数都需要正文中的id和objectType属性,以及适合该操作的任何其他所需数据。 (我使用JSON作为示例)。
我发现开发人员必须事先知道我们接受的objectType值是什么,以便将交互发布到正确的记录。我不确定这是不是一个好主意。
这个问题可能会被标记为偏离主题或开放辩论,但我希望有人可以告诉我上面提到的每种方法的更多优缺点,这样我就可以做出更好的决定。更好的是,提供完全不同的解决方案或结合上述两种方法的各个方面。