【问题标题】:Best endpoint design for associating用于关联的最佳端点设计
【发布时间】:2016-09-06 13:29:26
【问题描述】:

我有 2 个资源,每个资源都有一个 GET,我想将一个与另一个相关联。

假设我们有一个用户列表和一个学校列表

GET /api/users /api/users/5

GET /api/schools /api/schools/8

每所学校都可以有一个用户列表。此外,每个用户都可以有一个学校列表。 进行关联的最佳端点设计是什么?

例如:PUT /api/users/5/schools(在正文 JSON obj 中发送 8)

或 PATCH /api/schools/5(仅发送用户 obj 用户列表。列表中缺少的用户不会被删除)

感谢您的帮助。 谢谢

【问题讨论】:

    标签: c# asp.net-web-api asp.net-web-api2 endpoint


    【解决方案1】:

    看起来您的用户资源和学校资源之间是多对多的关系,并且在 RESTful 界面中,您可以通过将这些关系表示为链接来返回描述这些资源之间关系的结果/文档。

    因此,用户可以拥有学校列表,您可以将其表示为/api/users/5/schools,并且可以是指向学校的链接列表,如指向school/{id} 的链接。

    反之亦然,如果学校有多个用户,/api/schools/8/users 可以发回链接列表,其中每个链接指向 user/{id}

    从技术上讲,这还可以,但要小心管理这将是一个麻烦,因为:

    当您修改诸如 PUT 或 PATCH 之类的操作时,特别是在 PATCH 的情况下,如果您使用 json 作为您的有效负载格式,请选择 JsonPatch。无论如何,在这种情况下,如果您更新/api/users/5/schools 之类的,则必须使schools/{id}/users 的缓存失效,这在许多情况下可能无法确定。

    最简单的方法是使用membership 资源,您可以在其中列出用户和学校之间的成员资格,它可以轻松缓存并且您也可以轻松扩展它。 :)

    更多可以看here

    【讨论】:

      猜你喜欢
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 2015-01-19
      • 1970-01-01
      • 2014-09-26
      相关资源
      最近更新 更多