base_uri 不是基于 guzzle 客户端实例化
base_uri not being based from guzzle client instantiation
我正在使用 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
这样的绝对 url。如果我完全绕过 base_uri 并将其添加到 get 方法 $client->get('https://siteurl.com/api/v2/orders')
上,它就可以工作。
我正在使用:
"laravel/lumen-framework": "5.0.*",
"guzzlehttp/guzzle": "^6.0"
*Follow-up:
我添加了调试标志以便我可以比较 headers,明显的不同在于 get 请求行。
get方法中的绝对url(绕过base_uri):
GET /api/v2/orders?status=completed HTTP/1.1
使用base_uri(版本被剥离):
GET /api/orders?status=completed HTTP/1.1
您需要用正斜杠 /
结束您的 base_uri
例如,
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://siteurl.com/api/v2/'
]);
编辑:注意 base_uri 适用于 Guzzle 6+,而以前的版本使用 base_url。
我正在使用 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
这样的绝对 url。如果我完全绕过 base_uri 并将其添加到 get 方法 $client->get('https://siteurl.com/api/v2/orders')
上,它就可以工作。
我正在使用: "laravel/lumen-framework": "5.0.*", "guzzlehttp/guzzle": "^6.0"
*Follow-up:
我添加了调试标志以便我可以比较 headers,明显的不同在于 get 请求行。
get方法中的绝对url(绕过base_uri):
GET /api/v2/orders?status=completed HTTP/1.1
使用base_uri(版本被剥离):
GET /api/orders?status=completed HTTP/1.1
您需要用正斜杠 /
结束您的 base_uri例如,
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://siteurl.com/api/v2/'
]);
编辑:注意 base_uri 适用于 Guzzle 6+,而以前的版本使用 base_url。