getSomethingByAnother() 方法的 REST 风格是什么

What is the REST style for getSomethingByAnother() method

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

每个 link 都有一个 Tags 数组,我需要一个 REST 样式的 URI 来按标签值获取 link。在这种情况下,REST 样式的 URI 是什么?

我觉得应该是:

GET /links/:id/tags

那应该 return 与 ID 为“:id”的 link 相关的所有标签

如果您喜欢将标签作为单独的东西使用,您可以这样做:

GET /tags ==> 检索所有标签。

GET /tags/:id ==> 检索 ID 为 ..

的标签

GET /tags/links/:id

此外 resftull 并不严格,有时您需要执行的资源或操作不适合该架构,您可以创建自定义方法:

GET /tags/get-for-link-id/:id => 检索与 link

相关的标签

该示例毫无意义,但考虑到您的路线很复杂,参数太多,例如:

GET /tags?q=return&state=active&sort=date 如果此请求重复了很多次,对于您的 api 客户来说,拥有一个像 GET /tags/activeByDate

这样的自定义别名会很愉快

要获取某个标签的 links,您可以定义以下路由:

/tags/:tagID/links

并获取某个 link 的标签:

/links/:linkID/tags

视情况而定。 TYou can do something like /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: 几乎每天都有这个问题,至少下次搜索一下。