【发布时间】:2021-07-20 15:52:40
【问题描述】:
我正在开发一个公共和私有 REST API,我想问一些关于非/登录用户的问题。
我们使用以下 gem 来Serialize 每个对象。
案例A:
我网站的公共部分显示了一些书籍详细信息。我的端点是 GET /api/books/{book_id}。假设 book_id 为 1。 对于未登录的用户,响应如下:
{
id: 1,
name: "Harry Potter and the philosopher's stone"
}
对于登录用户,我想要这样的东西:
{
id: 1,
name: "Harry Potter and the philosopher's stone",
author: "J. K. Rowling"
}
如您所见,作者详细信息仅适用于登录用户(我不关心用户角色)。
案例 B:
取决于用户角色。
假设我想通过 GET /api/users/{user_id} 查询一些用户信息。假设 user_id 也是 1。
作为登录用户和非管理员用户,我会收到以下回复:
{
id: 1,
name: "John"
}
但作为管理员,我希望收到:
{
id: 1,
name: "John",
address: "9th street in the East Village, Manhattan"
}
作为非登录用户,它应该返回 401 错误。未授权。
请注意,本例中的地址信息仅供管理员用户使用。
我想知道这个逻辑是应该在两个不同的端点中,还是在同一个端点中。我不想在同一个 URL 中使用任何查询参数。
对我来说,根据提出请求的人而拥有一个具有多个返回的端点真的很令人困惑。我看过一些关于基于 rol 的 REST API 的文章,但有时似乎不是很清楚,这取决于你。
另外,我的疑问与 POST 请求有关。知道将接收哪个参数真的很令人困惑。我在想如果你有 6/7 个角色,你需要根据一些业务逻辑有不同的结果。
【问题讨论】:
-
stackoverflow.com/questions/31999790/… - 阅读此内容:)
-
这对 MVC 和 Java 来说很酷,但我的情况并非如此。谢谢!
标签: ruby-on-rails rest permissions user-roles clean-architecture