getSomethingByAnother()方法的REST样式是什么

时间:2015-07-04 15:33:36

标签: javascript rest web nodes

我有一个Node.js REST API服务,我有一个资源 - 例如GET /links

  • 要使用POST /links
  • 获取所有链接
  • 要提交新链接,请使用GET /links:id
  • 要通过linkid获取一个链接,我使用Tags

每个链接都有一个{ "name": "My extension", ... "permissions": [ "http://www.google.com/" ], ... } 数组,我需要一个REST样式的URI来获取标记值的链接。在这种情况下,REST样式URI是什么?

3 个答案:

答案 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:我们几乎每天都有这个问题,至少下次尝试搜索。