如何在Guzzle / Psr7请求中获取查询参数

Yah*_*din 3 guzzle guzzle6

我正在使用Guzzle 6。

我正在尝试模拟客户端并像这样使用它:

<?php

use GuzzleHttp\Client;
use GuzzleHttp\Handler\MockHandler;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Middleware;
use GuzzleHttp\Psr7\Request;
use GuzzleHttp\Psr7\Response;

$mock_handler = new MockHandler([
    new Response(200, ['Content-Type' => 'application/json'], 'foo'),
]);

$history = [];
$history_middleware = Middleware::history($history);

$handler_stack = HandlerStack::create($mock_handler);
$handler_stack->push($history_middleware);

$mock_client = new Client(['handler' => $handler_stack]);

// Use mock client in some way
$mock_client->get("http://example.com", [
    'query' => [
        'bar' => '10',
        'hello' => '20'
    ],
]);
// ------

// get original request using history
$transaction = $history[0];
/** @var Request $request */
$request = $transaction['request'];

// How can I get the query parameters that was used in the request (i.e. bar)
Run Code Online (Sandbox Code Playgroud)

我的问题是如何获取GuzzleHttp\Psr7\Request该类中使用的查询参数?

我设法获得的最接近的变量是:$request->getUri()->getQuery(),但这仅返回一个字符串,如下所示:bar=10&hello=20

Yah*_*din 5

我似乎已经解决了我的问题。

我可以简单地做到这一点:

parse_str($request->getUri()->getQuery(), $query);
Run Code Online (Sandbox Code Playgroud)

现在我有了一个查询参数数组。

欢迎其他解决方案!

  • `$ params = $ request-&gt; getQueryParams();`,然后您将获得一个像这样的值:`$ my_param = $ params ['my_param']?'默认';` (2认同)