我不是 100% 确定这完全回答了这个问题。但是我在寻找如何使用 Guzzle 构建复杂查询时发现了这个问题,这里没有一个答案是我最终使用的解决方案。我在这里添加它以防它对任何其他开发人员有用。
使用 Guzzle 6,您可以执行此类请求:
$endPoint = "https://example.com";
$queryParams = [
'a' => [
[
"b" => "c"
]
]
];
$options = [
'debug' => true, // so you can see what the request looks like
'query' => $queryParams
];
$client->request('GET', $endPoint, $options);
作为一个真实的例子,查询参数如下:
$queryParams = [
'filters' => [
[
"field" => "status",
"value" => "open",
"operator" => "equal"
],
[
"field" => "total",
"operator" => "greater_than",
"value" => 50
],
],
'limit' => 500,
'start' => 7
];
产生这样的网址:
https://example.com?filters=[{"field":"status","operator":"equal","value":"open"},{"field":"total","operator":"less_than","value":50}]&limit=500&start=7
query
关键是数组的键$options
,看起来很强大。我建议在编写复杂的正则表达式之前先玩一下。