我有一个Laravel
控制器,其中包含几个函数(用于API调用),这些函数使用 guzzlephp.org 来对我们合作伙伴的API进行外部调用。我想初始化$client
对象以统一用于可能需要它的所有函数。我是这样设置的:
private $client;
public function __construct()
{
$this->client = new GuzzleHttp\Client(
['base_url' => env('PARTNER_API_URL')],
['defaults' => [
'auth' => [env('PARTNER_UNAME'), env('PARTNER_PWORD')]
]]
);
}
现在,我的问题是,当我尝试调用使用guzzle client
对象的函数时,它没有读取或获取在构造函数中设置的值。我调用的函数的一个示例是:
public function getPersonData(Request $request){
$person_id = $request->input('person_id');
try {
$res = $this->client->get('/person/data?person_id='.$person_id);
}
catch (GuzzleException $e) {
return $e;
}
$response = $res->getBody();
return $response;
}
它返回一个带有此错误的异常:
RuntimeException: Error creating resource: [message] fopen(person/data?person_id=111034): failed to open stream: No such file or directory
如何在要在函数中使用的Laravel控制器的构造函数中正确设置guzzle
客户端?
答案 0 :(得分:0)
根据您指向的文档,该参数应为base_uri
,而不是base_url
。
http://docs.guzzlephp.org/en/stable/request-options.html
$client = new GuzzleHttp\Client(['base_uri' => 'http://httpbin.org']);