Guzzle 6 PUT 请求不发送表单参数

Guzzle 6 PUT request not sending form params

每当我想使用 Guzzle 发出 POST 请求时,我都会使用以下代码:

$request = $client->request('POST', $url, [
'form_params' => $params,
  'headers' => [
    'Referer' => '(intentionally removed)',
    'Accept' => 'application/json',
  ]
]);

代码运行没有任何问题,并且总是发送 $params 中的信息,但是当我将请求类型从 POST 更改为 PUT 时,请求变为:

$request = $client->request('PUT', $url, [
'form_params' => $params,
  'headers' => [
    'Referer' => '(intentionally removed)',
    'Accept' => 'application/json',
  ]
]);

请求突然停止发送包含在 $params 中的数据。

我已经用 POST 和 PUT 请求测试了请求发送到 Insomnia 的端点,并且这两种类型都按预期处理,所以我确定问题不存在。

什么会导致使用 POST 方法发送来自 Guzzle 的数据,但在使用 PUT 时却不能?

guzzle 文档中描述了此行为 form-params

form_params - Used to send an application/x-www-form-urlencoded POST request.

可能,你足够传递 json 格式的参数:

$request = $client->request('PUT', $url, [
  'json' => $params,
  'headers' => [
    'Referer' => '(intentionally removed)',
    'Accept' => 'application/json',
  ]
]);