【问题标题】:Guzzle Post Null/Empty Values in LaravelGuzzle 在 Laravel 中发布 Null/Empty 值
【发布时间】:2019-06-17 09:21:55
【问题描述】:

我一直在尝试使用 Guzzle 并学习如何解决它,但我对将请求与空值或 null 值结合使用有点困惑。

例如:

$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,
        ],
    ]
]);

运行测试后,我发现如果设置为 NULL,'web_id' 会从我的请求中完全消失。我的问题是如何确保在请求使用我的条件时保留它?

此时,如果我 dd $request->client,我得到的只是除 web_id 之外的所有内容。谢谢!

【问题讨论】:

  • 使用空字符串:'web_id' => '',

标签: laravel laravel-5 guzzle


【解决方案1】:

我昨天遇到了这个问题,您的问题在 Google 上排名很高。可惜它没有答案。

这里的问题是form_params 在后台使用http_build_query(),如this user contributed note 中所述,函数的输出中不存在空参数。

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

注意:这 2 个键可用作常量,分别为 GuzzleHttp\RequestOptions::JSONGuzzleHttp\RequestOptions::MULTIPART

【讨论】:

  • 谢谢老哥,用json代替form_params解决了
【解决方案2】:

在创建客户端之前尝试定义form_paramsheadersbase_uri 之类的东西,所以:

// set options, data, params BEFORE...

$settings = [
    'base_uri' => 'api.test',
    'headers' => [
        'Accept' => 'application/json',
        'Authorization' => 'ajustneedatokenheredontworry'                
    ],
    'form_params' => [
        'cash' => $request->cash,
        'reason' => 'I have a good soul'
    ]
];


// ...THEN create your client,

$client = new GuzzleClient($settings);


// ...and finally check your response.

$response = $client->request('POST', 'donations');

如果您在您正在调用的控制器函数中检查$request->all(),您应该会看到已成功发送。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-15
    • 2019-05-31
    • 2017-10-11
    • 2020-06-04
    • 2021-12-26
    • 1970-01-01
    • 2020-03-14
    • 2017-01-09
    相关资源
    最近更新 更多