按唯一属性查找资源

时间:2010-11-28 17:17:27

标签: api rest

我正在开发一个简单的REST API:

  • JS​​ON
  • 主要是类似CRUD的操作
  • POST for create,PUT for update

每个资源都由唯一的数据库句柄(实际上是自动增量)标识,它通过URI公开,如下所示:

 /collection/131

集合的表示是子资源列表,如下所示:

{
  "children": [
    { "name": "foo", "href": "/collection/131" }
  ]
}

“名称”字段在整个集合中必须是唯一的。

除了一件事,我对这种模式很满意;要查找具有给定名称的资源,您需要遍历集合表示。

如何最好地添加“解析名称到URI”机制,并仍然忠于REST?我看到以下选项:

  1. 将名称放在URI
  2. 使收藏品可搜索
  3. 某种重定向或查找机制
  4. 我不想做的原因(1)是URI地址空间不是API的一部分,而是实现细节。唯一已知的资源是根资源,可以从中找到所有其他资源。

    如何让API用户更简单地将名称解析为URI?

1 个答案:

答案 0 :(得分:1)

这是REST的问题之一。没有足够的HTTP方法来支持常见操作。

有些人可能会说这不是正确的REST方式,但是我看不出你能做到的其他方式:

/collection/findByName?name=...

编辑:您也可以选择更通用的方法,最终可以扩展:

/collection/search?name=...

/collection/search?name=...&something=...

编辑(2):如何:/collection?name=...

我相信它最终归结为你认为更直观的东西。

  • 基督教