【问题标题】:Would it be better to do a PUT request to update a whole item or DELETE + POST? [closed]执行 PUT 请求来更新整个项目或 DELETE + POST 会更好吗? [关闭]
【发布时间】: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

标签: php post put


【解决方案1】:

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

【讨论】:

  • 我明白了,对象是客户,他们有他们的购买、获得的服务、计费等。因此,每当有新账单到达时,我都需要将其附加到现有的账单上,但有时这个数组可能很大,这就是为什么我害怕 PUT 方法不能正常工作
  • 你使用的是nosql数据库吗?
  • 我们使用的是MariaDB,但API实际上是外部的,所以我们无法控制它
  • 我认为 put 对你有好处。
猜你喜欢
  • 1970-01-01
  • 2012-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2021-11-11
  • 2015-05-17
  • 1970-01-01
相关资源
最近更新 更多