我有一个使用Laravel构建的API,它可以使用身份验证令牌( passport包)。对于在经过身份验证的会话中访问的资源,我不清楚什么应该是最佳实践。
让我解释一下。
假设我想以管理员身份查看用户的订单,我访问:/v1/users/5/orders,列出ID为5的用户的所有订单。
但现在ID为5的用户已通过身份验证。访问他自己的订单资源的URL应该是什么?
会是:/v1/users/5/orders (并检查它是管理员还是会话属于ID为5的用户)
或/v1/my/orders
或/v1/my-orders
或/v1/orders (and使用用户5的会话ID,- OR在admin时列出所有结果)
它只是变得混乱,当在同一个URL上的订单可以列出,因为管理员想要访问它。或者实际上是会话用户想要看到它们。
发布于 2020-02-17 00:36:55
我建议使用/v1/orders,它将显示基于特权的订单集合:-所有订单在管理员会话的情况下-属于认证用户的订单,在较低特权用户的情况下。
添加像/my/orders或my-orders这样的前缀不会带来任何价值。
对于子集合,我将保留路由/v1/users/5/orders,它将允许管理员访问用户订单。
这是一个很好的教程,解释了API资源命名:https://restfulapi.net/resource-naming/
https://stackoverflow.com/questions/60250128
复制相似问题