想要添加转换对象和其他响应,我使用了以下代码:
$accessToken = Authorizer::issueAccessToken();
$user = User::where('email', $request->get('username'))->with('profile')->first();
if ($user) {
$accessToken['user'] = $this->response->item($user, new UserTransformer);
}
return $accessToken;
预期回应:
{
"access_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"token_type": "Bearer",
"expires_in": 31536000,
"data": {
"id": 1,
"email": "xxxxx",
"profile": {
"data": {
"id": 1,
"first_name": "Muhammad",
"last_name": "Shakeel",
}
}
}
}
但是没有获得转换对象,必须有一些更好的方法来添加带有响应的多个转换对象。我错过了什么吗?
修改 当前响应返回用户对象而不进行转换,如果我只返回用户转换后的对象,则返回正确的转换对象:
return $this->response->item($user, new UserTransformer);
答案 0 :(得分:1)
正如问题跟踪器(10 Things ASP.NET Developers Should Know About Web.config Inheritance and Overrides)所讨论的那样,jason lewis对票证作出如下回应:
目前你能做到这一点的唯一方法就是扭转局面。因此,您将返回响应项,然后添加访问令牌数据,可能是元数据。
所以,就像这样。
return $this->response->item($user, new UserTransformer)->setMeta($accessToken);
然后,响应将包含一个元数据密钥,该密钥将包含您的访问令牌数据。
答案 1 :(得分:0)
我使用内部请求让它工作。 https://github.com/dingo/api/wiki/Internal-Requests
所以你可以做的是
假设您有一条路由在api/users/{email_id}?access_token=...
发出access_token时,您可以执行以下操作:
$dispatcher = app('Dingo\Api\Dispatcher');
$array = Authorizer::issueAccessToken();
$array['user'] = $dispatcher->get('api/users/'.$request->get("username").'?access_token='.$array['access_token']);
return $array;
这将返回转换后的数据。
注意:您需要拥有一条获取用户数据的路线。
您必须处理/api/users/{email-id}
中不存在email-id的案例。