我正在使用 Laravel 5.1 构建 API。
我有三个访问权限:用户、管理员和超级管理员。
我对处理控制器的做法很好奇。目前,我为每个部分制作了3个不同的控制器。但是有时我需要在控制器内调用相同的函数,例如 Product:all()
。
我应该真的为每个部分制作3个不同的控制器还是可以只使用2个控制器来实现最佳实践?
如果所有用户(基本用户、管理员和超级管理员)返回的数据集相同,我建议只使用一个控制器/路由/api/v1/products
。
我猜每个管理员/超级管理员也是一个用户。因此,您应该使用一个中间件来保护您的/api/v1/products
路由,该中间件仅检查用户是否为经过身份验证的用户,因为这样他才有权访问数据。
如果除产品以外还有一些数据只能由管理员/超级管理员访问,则应为其创建另一个中间件。从未必要为完全相同的API创建两个或更多控制器/路由。
api.example.com/api/v1/user
和/api/v1/admin/
。我担心/user
和/admin
之间会有混淆。 - ssuhat
api.example.com/api/v1/user/products
,/api/v1/admin/products
,api/v1/super-admin/products
)。每个路由都返回完全相同的数据集?是这样吗? - Koga