Web api:检索 m2m 模型与检索主模型

Web api: Retrieve m2m model vs Retrieve main model

我有一个 code-design 问题。假设我们有一个带有 Web 服务的 Web 应用程序 (rest api) 和模型 User、Job 以及 JobFavorite。 JobFavorite 模型是一个包含字段 user 和 job 的 m2m 模型,这意味着用户可以将工作标记为最喜欢的。

假设我们有两种观点。

  1. 工作列表视图,用户可以在其中看到所有适合他的工作。

  2. 过滤后的职位列表视图,用户只能看到已标记为收藏的职位。

在这两个视图中,用户可以执行相同的操作:申请工作和(取消)将工作标记为收藏。

在第一个视图中,我们对 api 进行 ajax 调用以检索所有可用的作业。这个问题与第二种观点有关。

我们应该调用作业 api 并检索作业模型,还是调用 JobFavorite api 并检索 JobFavorite 模型然后使用模板中的 JobFavorite.job 字段?

我希望问题清楚并遵循提问规则。

更新:类伪代码:

class Job():
    owner - foreign key(User)
    ...etc

class JobFavorite():
    user - foreign key(User)
    job  - foreign key(Job)

class User():
    name
    phone

除非绝对必要,否则在这种特殊情况下,我不会使用新模型/api/控制器 (JobFavourite) 使前端问题复杂化。我会在 Job 的控制器上制作 "favourite" 过滤器。

因此,在过滤的职位列表视图中,您调用 GET /jobs?favourites=true 以仅获取最喜欢的用户职位。然而,在后端,这可以使用不同的策略来实现。您可以使用单独的 JobFavourite 模型来存储收藏夹。或者在 User 模型上制作 json / array 字段来存储他的收藏夹(谨慎使用后两者)。

这个建议还有另一个好处。将 is_favourite "flag" 作为一个过滤器,您可以统一处理作业(在这里应用另一个过滤器很容易)。