【发布时间】:2018-04-20 03:21:09
【问题描述】:
在我的应用程序中,我运行了两个 laravel 5.2 服务器,它们需要相互交互才能使用 guzzle 获取资源。
在我的服务器 1 中,我使用 League Transformer 返回一些数据,但数据需要包含来自我的服务器 2 的资源 我在转换函数中使用 guzzle 获取数据:
public function transform(MyModel $model) {
$client = new Client();
$result = $client->request('GET', 'localhost:8000/api/companies/'.$model->company_id);
$company= $result->getBody()->getContents();
$data = [
'id' => (int) $model->id,
'name' => $model->name,
'status' => $model->status,
];
$data['company'] = json_decode($company);
return $data;
}
当我向localhost:4040/api/models/1 提出获取此资源的请求时
我收到了这样的回复:
"data": {
"id": 1,
"name": "John Doe",
"status": "active",
"company": {
"data": {
"id": 1,
"name": "My Company",
}
}
我面临的问题是当我需要使用 guzzle 从服务器 2 访问 MyModel(存储在服务器 1 中)时,因为我需要向服务器 1 发出请求:
$result = $client->request('GET', 'localhost:4040/api/models/'.$model->_id);
并且服务器 1 需要向服务器 2(在变压器中)发出请求以获取公司。 这使得客户端永远等待并且永远不会得到响应。我尝试使用异步请求,但我得到一个空响应,如果我强制承诺等待,它也会永远挂起。
【问题讨论】:
标签: php laravel api laravel-5 guzzle