api - 多个端点以公开同一资源的不同 View

标签 api rest url resources endpoint

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

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

我有一个端点
www.domain.api.org/users/{:uid}/posts
这将返回用户发送的所有帖子或用户被标记的所有帖子。似乎还可以,但是如果我有一个端点,例如:
www.domain.api.org/posts
当使用 http GET 访问时,将返回所有公开帖子(即所有用户的帖子加上他的 friend 和公开帖子)。

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

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

最佳答案

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

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

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

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

关于api - 多个端点以公开同一资源的不同 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34169989/

相关文章:

api - 基于 Web 的 REST API 浏览器(资源管理器、导航器、漫游器)?

api - 在 openAPI 方面,有没有集中的方法来限制 api 暴露给 swagger ui?

java - POST 到 Jersey REST 服务时出现错误 415 不支持的媒体类型

java - 从过滤器中的数据库对用户进行身份验证是一种好习惯吗?

Javascript regexObj.exec() 说 TypeError : pattern. exec 不是函数

url - URL 中是否允许扩展 ASCII 字符 [äöå]?

.net - 从 .net 控制台应用程序调用 http url?

javascript - 我如何在我的 android 应用程序中使用 ThreeJS,或者是否有类似和强大的库像三个 js

json - 缓存远程 json(或 xml)调用(来自 Web 服务)

java - 有没有办法用 Spring 将 REST 调用排队?