【发布时间】:2020-02-18 13:16:59
【问题描述】:
当这个问题出现时,我正在尝试更新 API 上的一些客户记录。
首先我从 API 请求客户对象并将其转换为一个数组,我必须执行的更新包括将一个相当大的第二个数组附加到我第一次得到的数组上,所以我决定这样做,然后使用更新上传整个新数组以替代旧数组。
由于这是实际的 API,而且我所做的每一项更改都将直接投入生产,我不确定这是否会起作用,我认为我总是可以删除旧对象并发出简单的 POST 请求来上传新的。
这是负责上传新数组 ($response) 的方法。
function updateReceipt($response, $receiptId, $uri4, $token){
$ch = curl_init();
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_URL => $uri4.$receiptId,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_POSTFIELDS => http_build_query($response),
CURLOPT_HTTPHEADER => array("Content-Type: application/json", "key: ".$token)
);
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
$response = json_decode($response, true);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo "Status code: $http_code ";
curl_close($ch);
return $updated;
}
那么,PUT 方法会接受整个数组并更新客户记录吗? PUT 是否需要进行更准确的更改才能正常工作?
您如何看待先删除、后发布的解决方案?会不会更有效率?
感谢大家的帮助!
【问题讨论】:
-
这实际上取决于 API 的开发方式 - 以及 DELETE 还会做什么。您是否考虑过 DELETE 不仅会删除您的客户,还会删除所有关系的可能性,包括地址、订单、财务信息等。当您创建新关系时,其他任何关系都不会恢复。
-
API 本身和对它的访问/请求是否都由您编写/控制?还是你只能控制等式的一半?
-
@AleksG 还回答了 PatrickQ 的问题:我无法控制 API,所以是的,我看不出它在内部是如何工作的,也看不出它们之间的关系。我想我会坚持使用 PUT,谢谢你们,我一开始没有考虑这个问题! :)
-
这能回答你的问题吗? How to make HTTP POST web request