Guzzle Post Null/Empty Laravel 中的值
Guzzle Post Null/Empty Values in Laravel
我一直在尝试使用 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'
就完全从我的请求中消失了。我的问题是如何确保它在处理我的条件语句的请求中保持不变?
此时,如果我添加 $request->client
,我得到的只是 web_id
以外的所有内容。谢谢!
我昨天 运行 讨论了这个问题,你的问题在 运行 Google 上很好地解决了。可惜没有答案。
这里的问题是 form_params
使用 http_build_query() under the hood and as stated in this user contributed note,函数输出中不存在空参数。
我建议您通过 JSON 正文(使用 json
作为键而不是 form_params
)或通过多部分(使用 multipart
作为键)传递此信息form_params
).
注意:这 2 个键可用作常量,分别为 GuzzleHttp\RequestOptions::JSON
和 GuzzleHttp\RequestOptions::MULTIPART
尝试在创建客户端之前定义 form_params
、headers
或 base_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()
,您应该会看到已成功发送。
对于那些使用 laravel 的人,使用这个:
Http::asJson()
我一直在尝试使用 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'
就完全从我的请求中消失了。我的问题是如何确保它在处理我的条件语句的请求中保持不变?
此时,如果我添加 $request->client
,我得到的只是 web_id
以外的所有内容。谢谢!
我昨天 运行 讨论了这个问题,你的问题在 运行 Google 上很好地解决了。可惜没有答案。
这里的问题是 form_params
使用 http_build_query() under the hood and as stated in this user contributed note,函数输出中不存在空参数。
我建议您通过 JSON 正文(使用 json
作为键而不是 form_params
)或通过多部分(使用 multipart
作为键)传递此信息form_params
).
注意:这 2 个键可用作常量,分别为 GuzzleHttp\RequestOptions::JSON
和 GuzzleHttp\RequestOptions::MULTIPART
尝试在创建客户端之前定义 form_params
、headers
或 base_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()
,您应该会看到已成功发送。
对于那些使用 laravel 的人,使用这个:
Http::asJson()