Rest API按字段获取资源ID

时间:2012-09-16 07:57:42

标签: rest

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

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

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

GET /users/id-by-field

提交的数据:

{
  "fullName": "Mike Thomas"
}

返回数据:

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

1 个答案:

答案 0 :(得分:2)

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

GET /users?name="Mike Thomas"

优点是您正在使用“root”资源(用户),并且可以轻松扩展搜索参数,而无需更改路由中的任何内容。例如:

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

将搜索文本而不仅仅是名称。

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

{
  users: [
    {
      id: "123456789012345678901234",
      fullName: "Mike Thomas",
      dateJoined: 19620228
    }
  , {
      id: "234567890123456789012345"
      fullName: "Rick Astley",
      dateJoined: 19620227
    }
  ]
}