我正在开发一个简单的REST API:
每个资源都由唯一的数据库句柄(实际上是自动增量)标识,它通过URI公开,如下所示:
/collection/131
集合的表示是子资源列表,如下所示:
{
"children": [
{ "name": "foo", "href": "/collection/131" }
]
}
“名称”字段在整个集合中必须是唯一的。
除了一件事,我对这种模式很满意;要查找具有给定名称的资源,您需要遍历集合表示。
如何最好地添加“解析名称到URI”机制,并仍然忠于REST?我看到以下选项:
我不想做的原因(1)是URI地址空间不是API的一部分,而是实现细节。唯一已知的资源是根资源,可以从中找到所有其他资源。
如何让API用户更简单地将名称解析为URI?
答案 0 :(得分:1)
这是REST的问题之一。没有足够的HTTP方法来支持常见操作。
有些人可能会说这不是正确的REST方式,但是我看不出你能做到的其他方式:
/collection/findByName?name=...
编辑:您也可以选择更通用的方法,最终可以扩展:
/collection/search?name=...
/collection/search?name=...&something=...
编辑(2):如何:/collection?name=...
我相信它最终归结为你认为更直观的东西。