我有一个使用Laravel构建的API,该API可与身份验证令牌(护照包)一起使用。对于我来说,目前尚不清楚在经过身份验证的会话中访问的资源的最佳做法是什么。
让我解释一下。
假设我想以管理员身份查看用户的订单,我访问:/v1/users/5/orders
,所有列出的ID为5的用户的订单都会列出。
但是现在ID为5的用户已通过身份验证。 URL应该是什么才能访问他自己的订单资源?
会是:/v1/users/5/orders
(并检查它是管理员还是会话属于ID为5的用户)
或/v1/my/orders
或/v1/my-orders
或/v1/orders
(并使用用户5的会话ID,或在管理时列出所有结果)
当在同一URL上列出订单时,就会变得混乱,因为管理员希望访问它。或者实际上是会话用户想要查看它们。
答案 0 :(得分:0)
我建议使用/v1/orders
,它会显示基于特权的订单集合:
-在管理会话的情况下的所有订单
-如果用户的特权较低,则属于已认证用户的订单。
添加前缀/my/orders
或my-orders
不会带来任何价值。
对于子集合,我将保留路由/v1/users/5/orders
,该路由将允许管理员访问用户订单。
这是一个很好的教程,解释了API资源的命名:https://restfulapi.net/resource-naming/