Php 执行PUT请求以更新整个项目还是删除+;邮递

Php 执行PUT请求以更新整个项目还是删除+;邮递,php,post,put,Php,Post,Put,当这个问题出现时,我正试图更新API上的一些客户记录 首先,我从API请求customer对象并将其转换为一个数组,我必须执行的更新包括在第一个数组的基础上附加一个相当大的第二个数组,因此我决定这样做,然后使用update上载整个新数组,以替代旧数组 由于这是实际的API,我所做的每一项更改都将直接进入生产,我不确定这是否会起作用,我认为我可以删除旧对象并发出一个简单的POST请求来上传新对象 这是用于上载新数组($response)的方法 函数updateReceipt($response、$

当这个问题出现时,我正试图更新API上的一些客户记录

首先,我从API请求customer对象并将其转换为一个数组,我必须执行的更新包括在第一个数组的基础上附加一个相当大的第二个数组,因此我决定这样做,然后使用update上载整个新数组,以替代旧数组

由于这是实际的API,我所做的每一项更改都将直接进入生产,我不确定这是否会起作用,我认为我可以删除旧对象并发出一个简单的POST请求来上传新对象

这是用于上载新数组($response)的方法

函数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(“内容类型:application/json”,“键:”.$token)
);
curl_setopt_数组($ch$options);
$response=curl\u exec($ch);
$response=json_decode($response,true);
$http\u code=curl\u getinfo($ch,CURLINFO\u http\u code);
echo“状态代码:$http_代码”;
卷曲关闭($ch);
返回$updated;
}
那么,PUT方法会接受整个数组并更新客户记录吗?PUT是否需要进行更精确的更改才能写入

您如何看待“先删除,后发布”的解决方案?它会更有效率吗



谢谢大家的帮助

如果您确定旧对象未引用其他数据,则可以执行delete\u post,但如果它与其他数据相关,则不是正确的解决方案。

如果您确定旧对象未引用其他数据,则可以执行delete\u post,但是,如果它与其他数据相关,那么它不是正确的解决方案。

这实际上取决于API的开发方式,也取决于DELETE还能做什么。您是否考虑过删除不仅会删除您的客户,还会删除所有关系,包括地址、订单、财务信息等。当您创建一个新关系时,其他关系都不会恢复。API本身和对它的访问/请求是否都由您编写/控制?还是你只控制了方程的一半?@AleksG还回答了PatrickQ的问题:我不控制API,所以是的,我看不出它内部是如何工作的,也看不到它们之间的关系。我想我会坚持下去,谢谢你们,我一开始没有考虑这个问题!这回答了你的问题吗?这实际上取决于API的开发方式,也取决于DELETE还能做什么。您是否考虑过删除不仅会删除您的客户,还会删除所有关系,包括地址、订单、财务信息等。当您创建一个新关系时,其他关系都不会恢复。API本身和对它的访问/请求是否都由您编写/控制?还是你只控制了方程的一半?@AleksG还回答了PatrickQ的问题:我不控制API,所以是的,我看不出它内部是如何工作的,也看不到它们之间的关系。我想我会坚持下去,谢谢你们,我一开始没有考虑这个问题!这回答了你的问题吗?我明白了,对象是客户,他们有他们的购买、获得的服务、计费等。因此,每当新账单到达时,我需要将其附加到现有账单上,但有时这个数组可能很大,这就是为什么我担心PUT方法无法正常工作的原因。您是否使用nosql数据库?我们使用的是MariaDB,但API实际上是外部的,因此,我们对itI没有任何控制权。我认为,then put对您有好处。我知道,对象是客户,他们有自己的购买、获得的服务、账单等。因此,每当收到新账单时,我都需要将其附加到现有账单上,但有时这个数组可能非常庞大,这就是为什么我担心PUT方法不能正常工作的原因。你使用的是nosql数据库吗?我们使用的是MariaDB,但API实际上是外部的,所以我们无法控制它。我认为PUT对你有好处。