这里的一些开发人员正在就来自RESTful API的GET 请求是否应该返回所请求资源的 ID 进行友好的(有些人会说宗教性的)讨论。让我们假设以下 GET 请求:
http://my.api.com/rest/users/23
这当前返回:
{"name": "Jim", "age": 40, "favoriteColor": "blue"}
请注意,结果集中缺少“id”。
基本上有 4 个阵营在与这个问题作斗争。
CAMP #1:当调用者发出 GET 请求时,他们已经知道 ID。因此,结果集不应包含ID。如果调用者需要此数据来启用 UI 编辑,则调用者需要通过 ID 23,也许手动将成员 {"id": 23} 添加到 JSON。
Camp #1 中的人们还争辩说,结果集中存在 ID 表明该值可以修改,当然不能。
CAMP #2:如果没有 ID,JSON 结果集就不能原生地用于 UI 表单中的编辑/更新操作。相反,AJAX 回调机制需要负责传递 ID 字段并将这些字段手动添加到结果集中。这似乎很笨拙且容易出错。UI 人员正在争论结果集“感觉”就像它缺少应该存在的数据,即 ID。
CAMP #3:这些人关心的是一致性。如果我们曾经有一个 API 返回的用户对象集合,这些对象必须包含 ID。因此,为了保持一致性,GET 的单例版本也应该包含 ID。
CAMP #4:这些人建议用户的 GET 请求可以返回包含 ID 的 HyperMedia 或 SelfLinks 形式的元数据。
这不是一个深奥的“谁是对的?” 论据,要么。我们采用的方法将决定我们 API 的形状,并影响几个开发人员在新几周内的工作量。