如何在Laravel构造函数中正确设置和获取Guzzle客户端对象值?

时间:2019-09-17 19:09:04

标签: laravel guzzle guzzle6

我有一个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客户端?

1 个答案:

答案 0 :(得分:0)

根据您指向的文档,该参数应为base_uri,而不是base_url
http://docs.guzzlephp.org/en/stable/request-options.html

$client = new GuzzleHttp\Client(['base_uri' => 'http://httpbin.org']);
相关问题