如何在重定向前修改 URI

How to modify the URI before redirect

如何在重定向之前修改 URI 实例 GuzzleHttp\Psr7\Uri,尤其是查询部分?

我试图添加一个修改请求的中间件,但是一旦我添加 CurlHandler 响应主体总是 returns 一个空字符串。

$stack = new HandlerStack();
$stack->setHandler(new CurlHandler());

$client = new Client(['handler' => $stack]);

$stack->push(Middleware::mapRequest(function (RequestInterface $request) {

  // Modify request

  return $request;
}));

问题是由于 HandlerStack 类型,CurlHandler 默认不处理重定向。

如何修改请求URI

$stack = HandlerStack::create();

$stack->push(Middleware::mapRequest(function (RequestInterface $request) {
  // Retrieve the URI
  $uri = $request->getUri();

  $query = // update query

  // Update the URI query
  $uri = $uri->withQuery($query);

  return $request->withUri($uri);
}));