base_uri不是基于guzzle客户端实例化

时间:2015-06-14 20:24:15

标签: guzzle lumen

我使用流明试图通过guzzle设置简单的api请求。

问题是base_uri参数似乎没有在初始new Client()上正确传递。

简化示例:

use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://siteurl.com/api/v2'
]);

然后通过get

调用api
$res = $client->get('orders', [
    'query' => [
        'status' => 'completed'
    ]
]);

不起作用。我一直小心不要使用像/orders这样的绝对网址。如果我完全绕过base_uri并将其添加到get方法$client->get('https://siteurl.com/api/v2/orders')上,则可以正常工作。

我正在使用: " laravel / lumen-framework":" 5.0。*", " guzzlehttp / guzzle":" ^ 6.0"

*随访:

我添加了调试标志,因此我可以比较标头,并且明显区别在于获取请求行。

get方法中的绝对url(绕过base_uri):

  

GET / api / v2 / orders?status =已完成HTTP / 1.1

使用base_uri(正在剥离版本):

  

GET / api / orders?status =已完成HTTP / 1.1

1 个答案:

答案 0 :(得分:22)

您需要使用正斜杠/

来终止base_uri

如,

use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://siteurl.com/api/v2/'
]);

编辑:注意,base_uri适用于Guzzle 6+,而之前的版本使用base_url。