【问题标题】:How to generate a valid query for GET request from a nested array by "guzzle"?如何通过“guzzle”从嵌套数组生成 GET 请求的有效查询?
【发布时间】:2023-09-18 18:06:01
【问题描述】:

我想通过 guzzle 向 API 发送 get-query。如果我使用这种方法

$test = [

        'unum' => '0256',
        'size' => 'size',
        'dough' => 'dough'
    ];
$response = $this->guzzleClient->get('ajax/getprice.php?for_send=', [
            'query' => $test
        ]);

效果最好。
但是如果我想发送一个嵌套数组,就像这样:

$test = [
    [
        'unum' => '0256',
        'size' => 'big',
        'dough' => 'thin'
    ],
    [
        'unum' => '0256',
        'size' => 'big',
        'dough' => 'thin'
    ]

];
$response = $this->guzzleClient->get('ajax/getprice.php?for_send=', [
    'query' => $test
]);

它不起作用。
但我确信 API 接受这样的请求(看起来像这样 ajax/getid.php?for_send=%5B%7B%22unum%22%3A%220141%22%2C%22dough%22%3A%22%D0%9F%D1%8B%D1%88%D0%BD%D0%BE%D0%B5%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%22%2C%22size%22%3A%22%D0%91%D0%BE%D0%BB%D1%8C%D1%88%D0%B0%D1%8F%2C%2035%20%D1%81%D0%BC%22%7D%2C%7B%22unum%22%3A%220256%22%2C%22dough%22%3A%22%D0%9F%D1%8B%D1%88%D0%BD%D0%BE%D0%B5%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%22%2C...

如何从嵌套数组生成有效的query

【问题讨论】:

    标签: api guzzle


    【解决方案1】:

    根据您的示例,API 接受 for_send 参数内的 JSON,因此只需将您的数组编码为 JSON:

    $test = [
        [
            'unum' => '0256',
            'size' => 'Большая, 35 см',
            'dough' => 'Тонкое тесто'
        ],
        // ...
    ];
    $response = $this->guzzleClient->get('ajax/getprice.php', [
        'query' => ['for_send' => json_encode($test)]
    ]);
    

    【讨论】: