1

什么是通过字段(例如名称)获取资源 ID 的正确休息方式。看看以下操作:

GET /users/mike-thomas
GET /users/rick-astley

我不想在我的 API 端使用这些操作,而是想编写一个 API 操作,在提交字段时获取我的 ID(在用户的情况下为名称),例如:

GET /users/id-by-field

提交数据:

{
  "fullName": "Mike Thomas"
}

返回数据:

{
  "data": {
    "id": "123456789012345678901234"
  }
}
4

1 回答 1

3

您想要的是一个算法 URL,其中算法的参数作为 URL 参数传递:

GET /users?name="Mike Thomas"

优点是您使用的是“根”资源(用户),并且搜索参数很容易扩展,而无需更改路由中的任何内容。例如:

GET /users?text="Mike"&year=1962&gender=M

不仅会在名称中搜索文本。

结果数据将是用户列表,并且可能返回的不仅仅是这些用户的标识。除非 fullName 唯一标识用户,否则您无论如何都需要允许这样做。当然,如果参数唯一标识了该用户,则该列表可以包含单个用户。

{
  users: [
    {
      id: "123456789012345678901234",
      fullName: "Mike Thomas",
      dateJoined: 19620228
    }
  , {
      id: "234567890123456789012345"
      fullName: "Rick Astley",
      dateJoined: 19620227
    }
  ]
}
于 2012-09-16T08:25:56.150 回答