我有用户进入我的应用程序,有两个不同的角色,学生和管理员。每个用户都有一个team_id字段引用,告诉用户它属于哪个团队。在这种情况下,我的数据库由以下表组成:用户,团队。
为了显示团队详细信息,我有一个如下API: GET:api / teams / {team_id}
public function show($id)
{
$team = $this->teamService->findById($id);
if ($team) {
return response()->json(['message' => 'Success', 'success' => true, 'status' => 200, 'data' => $team]);
} else {
return response()->json(['message' => 'Error', 'success' => true, 'status' => 404, 'data' => null]);
}
}
这只适用于admin,因为$ id作为参数传递到url中,这意味着只有admin可以放任何$ id,而普通用户id必须根据他们所属的团队自动关联(所以在这种情况下,我想展示他们所属团队的团队细节。
所以在这种情况下我的api应该是这样的: GET:api / teams
public function show()
{
$team = $this->teamService->findById(Auth->user->team_id); //associate the team id for user logged in
if ($team) {
return response()->json(['message' => 'Success', 'success' => true, 'status' => 200, 'data' => $team]);
} else {
return response()->json(['message' => 'Error', 'success' => true, 'status' => 404, 'data' => null]);
}
}
所以我的最后一个问题是,是否有任何方法可以将这两个角色放在一个地方..所以不会有不同角色的重复功能。
在这种情况下,API应该是什么样子?
由于
答案 0 :(得分:1)
我是否需要为每个用户角色编写单独的API端点?
不,绝对不是。
在这种情况下API应该是什么样的?
没有"对"回答,但这里有两个想法:
1)User对象应该包含指向您的团队对象的链接:
{ name: "bob", team_link: "/team/3" }
然后您的/team/:id
路由应该检查"如果您不是管理员用户,如果用户不在此团队中,请提供404。"
2)如果您确实认为用户需要获得自己的团队信息,那么您可以拥有/team
路线。但以上是更标准的。或者,提供指向真实团队对象的链接。 (为什么?因为它使缓存变得更容易。)