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

时间:2015-12-09 02:56:01

标签: api rest url resources endpoint

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

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

我有一个端点

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

这将返回用户发送的所有帖子或用户被标记的帖子。似乎没问题,但如果我有一个端点如下:

www.domain.api.org/posts

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

不同之处在于,第一个URL指向用户拥有的资源,而第二个URL指向公共资源(当然包含用户帖子) 这些没关系,还是我做错了/不太明智的做法?

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

3 个答案:

答案 0 :(得分:0)

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

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

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

如果这取代了你提到的第一个终点,那就是要走的路。

答案 1 :(得分:0)

我想在@Opal的答案之上添加内容。

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

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

要进行迭代:您当前的实现错误吗? 否,但理想情况下,您会use a combination of both route parameters are query parameters to achieve this

答案 2 :(得分:0)

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

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

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