Guzzle 在 Laravel 中发布 Null/空值

inu*_*iva 6 laravel guzzle laravel-5

我一直在尝试使用 Guzzle 并学习解决它的方法,但我对将请求与空值或空值结合使用感到有些困惑。

例如:

$response = $client->request('POST', 
    'https://www.testsite.com/coep/public/api/donations', [
    'form_params' => [
        'client' => [
            'web_id' => NULL,
            'name' => 'Test Name',
            'address1' => '123 E 45th Avenue',
            'address2' => 'Ste. 1',
            'city' => 'Nowhere',
            'state' => 'CO',
            'zip' => '80002'
        ],
        'contact' => [],
        'donation' => [
            'status_id' => 1,
            'amount' => $donation->amount,
            'balance' => $donation->balance,
            'date' => $donation->date,
            'group_id' => $group->id,
        ],
    ]
]);
Run Code Online (Sandbox Code Playgroud)

运行测试后,我发现'web_id'如果设置为 NULL ,则完全从我的请求中消失。我的问题是我如何确保它与我的条件一起使用的请求保持一致?

在这一点上,如果我 dd $request->client,我得到的只是除web_id. 谢谢!

小智 8

我昨天遇到了这个问题,你的问题在谷歌上排名很好。可惜没有答案。

这里的问题是在幕后form_params使用http_build_query()并且如此用户贡献的注释中所述,函数的输出中不存在空参数。

我建议您通过 JSON 正文(通过使用json作为键而不是form_params)或通过多部分(通过使用multipart而不是form_params)传递此信息。

注意:这两个键分别作为常量GuzzleHttp\RequestOptions::JSONGuzzleHttp\RequestOptions::MULTIPART