如何使用 Guzzle 组合默认查询字符串参数和特定于请求的参数



当我运行以下代码(使用最新的Guzzle,v6)时,请求的URL http://example.com/foobar?foo=bar从请求中删除boo=far

$guzzle_http_client = new GuzzleHttpClient([
    'base_uri' => 'http://example.com/',
    'query' => [
        'foo' => 'bar'
    ],
]);
$request = new GuzzleHttpPsr7Request('GET', 'foobar?boo=far');
$response = $guzzle_http_client->send($request);

当我运行以下代码时,将boo=far作为 Client::send() 方法的一部分传递,请求的 URL http://example.com/foobar?boo=far

$guzzle_http_client = new GuzzleHttpClient([
    'base_uri' => 'http://example.com/',
    'query' => [
        'foo' => 'bar'
    ],
]);
$request = new GuzzleHttpPsr7Request('GET', 'foobar');
$response = $guzzle_http_client->send($request, ['query' => ['boo' => 'far']]);

当然,我想请求的URL是:

http://example.com/foobar?foo=bar&bar=foo

如何使 Guzzle 将默认客户端查询字符串参数与特定于请求的参数组合在一起?

您可以尝试使用"getConfig"方法获取默认的"查询"选项,然后将它们与新的"查询"选项合并,下面是一个示例:

$client = new GuzzleHttpClient([
    'base_uri' => 'http://example.com/',
    'query'   => ['foo' => 'bar']
]);

然后,您可以轻松发送GET请求:

$client->get('foobar', [
    'query' =>  array_merge(
        $client->getConfig('query'),
        ['bar' => 'foo']
     )
]);

您可以在此处找到其他信息 请求选项

最新更新