我有一个Node.js REST API服务,我有一个资源 - 例如GET /links
。
POST /links
GET /links:id
Tags
每个链接都有一个{
"name": "My extension",
...
"permissions": [
"http://www.google.com/"
],
...
}
数组,我需要一个REST样式的URI来获取标记值的链接。在这种情况下,REST样式URI是什么?
答案 0 :(得分:3)
要获取某个标记的链接,您可以定义以下路径:
/tags/:tagID/links
获取某个链接的标记:
/links/:linkID/tags
答案 1 :(得分:1)
我认为应该是:
GET /links/:id/tags
应该返回与id":id"
相关的所有标签如果你喜欢将你的标签作为一个单独的东西使用,你可以这样做:
GET /tags
==>检索所有标签。
GET /tags/:id
==>检索带有id ..
GET /tags/links/:id
resftull也不严格,有时候,您需要执行的资源或操作不适合该架构,您可以创建自定义方法:
GET /tags/get-for-link-id/:id
=>检索与链接相关的标签
这个例子毫无意义,但考虑到你有一条复杂的路线有如此多的参数,例如:
GET /tags?q=return&state=active&sort=date
如果此请求重复这么多次,对于您的api客户来说,拥有GET /tags/activeByDate
答案 2 :(得分:0)
这取决于。 TYou可以做类似/blah:{tagId}/
的事情(这也是完全有效的URI)。或者你可以/links/?tagID={id}
等等。我不喜欢已经提到的分层URI /tags/{id}/links
,我认为平面URI要好得多。如果关系也有属性,那么您可以使用/tag-link-relationships/{relationshipId}
或/tag-link-relationships/tag:{tagId}/
或/tag-link-relationships/?tag={tagId}
等...
从客户端的角度来看,URI结构并不重要,因为客户端遵循服务响应的超链接(也就是统一接口/ HATEOAS约束)。
off:我们几乎每天都有这个问题,至少下次尝试搜索。