我试图准确理解多对多关系如何运作。
假设我有Movie
和Actor
模型。 Actors
属于许多Movies
,Movies
属于Actors
。我知道我可以创建一个MovieActor
表,其中包含来自Movie
和Actor
的外键。我不太清楚的部分是,我是否要创建新的Actor
并将其与Movie
(POST
)相关联或将现有的Actor
更新为将其与Movie
(PUT
)相关联,我是否使用/api/actor
端点,还是为/api/movieactor
创建单独的端点?
答案 0 :(得分:1)
您可以使用其中之一。通常,REST API(甚至是备份数据库)将对该数据进行非规范化,以使其存在于两个条目中。但是,您需要如何通知REST服务器数据。您可以POST一个新的Actor,并在Actor中包含Movies-而Server(除了为Actor添加新记录外)还可以更新存储在Movie记录中的数据。或相反亦然。或两者。没有规则修改一个REST对象不会对其他对象产生副作用。
我认为人们通常会建议不要使用第三个API来获取两个主要对象之间的关系数据。它只会使客户端API复杂化,引入更多延迟,并向客户端暴露过多的DB内部(使得将来更难更改)。