我正在构建一个 API,它将被不同角色/类型(例如 reader
、editor
)的不同登录(和未登录)用户使用>、admin
等)。
/users/{user_id}/path/to/data
之类的东西是定义用户有权访问的正确 RESTful 方式吗?或者可能只是 /{user_id}/path/to/data
?还是应该像 /path/to/data?user_id={user_id}
或 /path/to/data?user_token={user_token}
这样的正文/查询参数?或者标题是否是该信息的正确位置?
应该如何向 API 服务器提供符合 REST 规范的方式?
注意:这与user
资源的子资源无关,例如addresses
(如果我们将其定义为 user
的子资源)。由于这种情况很明显 /users/{user_id}/addresses/{address_id}
。问题通常是关于用户可能访问的全部数据。
最佳答案
我认为用户 ID 在与用户无关的 URL 中没有位置 - 你所描述的最好简单地表示为/path/to/data/- 并且 user_token 或类似的应该在 header (例如 auth header 中的 JSON Web Token),不在 URL 中,也不在查询参数中。
如果用户无权访问指定资源,则系统应响应授权错误 HTTP 响应。
只有当资源是用户的子资源时,您描述的结构才适用,正如您所指出的,对于您询问的资源而言情况并非如此。
关于rest - 什么是符合 REST 的方法来处理基于用户的资源访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30847561/