Laravel 5 dingo api,将多个转换后的对象添加到响应中
Laravel 5 dingo api, add multiple transformed objects to the response
想要添加转换后的对象以及其他响应,我使用了以下代码:
$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",
}
}
}
}
但没有得到转换后的对象,必须有一些更好的方法来添加多个转换后的对象和响应。我错过了什么吗?
编辑
当前响应 returns 没有转换的用户对象,如果我 return 只有像下面这样的用户转换对象,它 returns 正确的转换对象:
return $this->response->item($user, new UserTransformer);
我使用内部请求让它工作。 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;
这将 return 转换数据。
注意:你需要有一个获取用户数据的路由。
您将不得不处理 /api/users/{email-id}
中 email-id 不存在的情况。
正如在问题跟踪器 (https://github.com/dingo/api/issues/743#issuecomment-160514245) 上讨论的那样,jason lewis 对票证的回应如下:
目前唯一能做到这一点的方法就是扭转它。所以你会 return 响应项,然后添加访问令牌数据,可能作为元数据。
所以,像这样。
return $this->response->item($user, new UserTransformer)->setMeta($accessToken);
响应随后将包含一个元数据密钥,该密钥将包含您的访问令牌数据。
想要添加转换后的对象以及其他响应,我使用了以下代码:
$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",
}
}
}
}
但没有得到转换后的对象,必须有一些更好的方法来添加多个转换后的对象和响应。我错过了什么吗?
编辑 当前响应 returns 没有转换的用户对象,如果我 return 只有像下面这样的用户转换对象,它 returns 正确的转换对象:
return $this->response->item($user, new UserTransformer);
我使用内部请求让它工作。 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;
这将 return 转换数据。
注意:你需要有一个获取用户数据的路由。
您将不得不处理 /api/users/{email-id}
中 email-id 不存在的情况。
正如在问题跟踪器 (https://github.com/dingo/api/issues/743#issuecomment-160514245) 上讨论的那样,jason lewis 对票证的回应如下:
目前唯一能做到这一点的方法就是扭转它。所以你会 return 响应项,然后添加访问令牌数据,可能作为元数据。
所以,像这样。
return $this->response->item($user, new UserTransformer)->setMeta($accessToken);
响应随后将包含一个元数据密钥,该密钥将包含您的访问令牌数据。