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

Multiple endpoints to expose different views of the same resource

我正在努力寻找这个问题的答案(可能是因为我没有正确提出问题)...

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

我有一个端点

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

这将 return 用户发送的所有帖子或用户被标记的帖子。看起来不错,但如果我有一个端点,例如:

www.domain.api.org/posts

当用 http GET 命中时将 return 所有 public 帖子(即所有用户的帖子加上他的朋友和 public 的帖子)。

不同之处在于第一个 URL 指向用户拥有的资源,而第二个 public 指向用户拥有的资源(当然包括用户的帖子) 这些可以吗,还是我做错了/不太明智?

重申一下,我可以有多个端点指向同一资源的不同 contexts/views 吗?

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

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

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

如果这可以替代您提到的第一个端点,那就可以了。

我想补充@Opal 的回答。

这些可以吗,还是我做错了/不太明智?

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

迭代:你现在的实现是不是错了? 不,但理想情况下你会 use a combination of both route parameters are query parameters to achieve this

要创建端点,您必须确保立即拥有这些信息:

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

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