关于api:多个端点公开同一资源的不同视图

Multiple endpoints to expose different views of the same resource

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

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

我有一个端点

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

这将返回用户发送的所有帖子或标记了用户的帖子。似乎还可以,但是如果我有一个端点,例如:

www.domain.api.org/posts

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

区别在于第一个URL指向用户拥有的资源,而第二个URL指向公共资源(当然包括用户的帖子)
这些好吗,还是我做错了/不太明智的方式?

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


基本上应避免使用同一资源的多个端点。但是,在这种特定情况下,这确实是有道理的。

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

1
www.domain.api.org/posts/?userId=<userId>

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


我想在@Opal \\'s答案的顶部添加。

这些还好吗,还是我做错了/不太明智的方式?

理想情况下,就像提到的Opal一样,您应该在网址中使用queryParams。对于我已经构建的许多应用程序,我不预先知道从api返回的uid,因此选择一个项目并将其作为查询参数传递到我的url中是有意义的。但这还具有将密钥包含在URL中的附加好处,允许您将其添加为书签,将该URL传递给另一个用户,他们将自动看到您希望他们看到的相同数据。

要进行迭代:您当前的实现是否错误?不,但是理想情况下,您将两个路由参数都组合为查询参数以实现此


要创建端点,必须确保立即拥有以下信息:

  • 端点名称
  • 状态:激活还是不激活(必需)-端点是激活还是禁用
  • 服务配置文件(必需)-分配给端点的服务配置文件的ID。
  • 资费配置文件(必需)-分配给端点的资费配置文件的ID。

您可以添加其他可选信息,并确保端点的结构。
希望对您有帮助。