我的问题是何时可以将单独的模型合并到一个单一的 REST 资源中,以及这是否会导致设计变得棘手且难以处理。
假设我有一个电影流媒体服务,用户只能观看他们有权观看的电影类型。假设这些是用这些假设模型表示的:
users (id)
movie_genres (id, genre_name)
users_to_genres_permissions (id, genre_id, user_id)
通过 REST 路由/users
/movie_genres
和/users_to_genres_permissions
现在,作为这个 API 的用户客户端(想想一个网站或移动应用程序),为了找出我可以获取哪些类型,我会获取类型权限,然后是所有电影类型。两个网络调用。
但是,可以提出一个论点,即必须对 API 进行多次往返是低效的,而且您还必须处理客户端上的一堆连接。这个例子很简单,它有 3 个关系,但在现实世界中,你可以有更长的链。
因此,可以考虑将两个模型合二为一,例如返回已加入电影类型的权限:
movie_genres (id, genre_name, authorized_for_current_user)
然而问题是,这个思考过程可以走得很远。通过在服务器上进行所有连接,您可以为客户端节省大量连接和往返行程。然而,你在什么时候停下来?什么时候返回的不再是 REST 资源,而是连接在一起的通用数据块?
是否有决定在哪里画线的经验法则?