多个端点公开同一资源的不同视图

gez*_*ace 7 api rest url resources endpoint

我正在努力寻找答案(也许是因为我没有正确提出问题)......

我正在构建 API 以公开我正在创建的基本社交网络服务的资源。我的理解是 API 中 URL 的结构本质上是一个层次结构,类似于目录的结构。我认为这意味着我可以有多个端点来访问相同的资源或资源链接集合。例如:

我有一个端点

www.domain.api.org/users/{:uid}/posts

这将返回用户发送的所有帖子或用户被标记的所有帖子。看起来没问题,但是如果我有一个端点,例如:

www.domain.api.org/posts

当使用 http GET 命中时,将返回所有公开帖子(即所有用户的帖子以及他的朋友和公开帖子)。

不同之处在于第一个 URL 指向用户拥有的资源,而第二个 URL 指向公共资源(当然包括用户发布的内容)这些是可以的还是我这样做是错误的/不太明智的方式?

重申一下,我可以有多个端点指向同一资源的不同上下文/视图吗?

Opa*_*pal 6

基本上应该避免相同资源的多个端点。然而,在这种特殊情况下,它确实有意义。

您可以做的是向userId以下端点引入可选的查询参数:

www.domain.api.org/posts/?userId=<userId>
Run Code Online (Sandbox Code Playgroud)

如果这替代了您提到的第一个端点,那就是要走的路。

  • 为什么**应该避免**?有任何研究、资源、标准……支持这一声明吗?如果不遵循这个“应该”会发生什么?而且,基于项目特定的架构,甚至可能是**应该使用多个端点**。**应该**的观点纯粹是主观的,除非在某些背景下得到推理的支持。 (3认同)