为了账号安全,请及时绑定邮箱和手机立即绑定

以编程方式更新 Zapier 存储

以编程方式更新 Zapier 存储

肥皂起泡泡 2021-07-22 08:13:27
我一直在通过 store.zapier.com 端点使用 Zapier 存储 api,并且在设置和检索值方面取得了成功。然而,我最近发现需要存储更复杂的信息,我想随着时间的推移更新这些信息。我目前存储的数据如下所示:{"task_id_1": {"google_id": "google_id_1", "due_on": "2018-10-24T17:00:00.000Z"},"task_id_2": {"google_id": "google_id_2", "due_on": "2018-10-23T20:00:00.000Z"}, "task_id_3": {"google_id": "google_id_3", "due_on": "2018-10-25T21:00:00.000Z"},}我想要做的是更新任何任意 task_id_n 的“due_on”子值,而不必再次删除和添加它。阅读 store.zapier.com 上的 API 信息,我发现您可以发送补丁请求并结合特定操作来更好地控制存储的数据。我尝试使用补丁请求和“set_child_value”操作如下:def update_child(self, parent_key, child_key, child_value):        header = self.generate_header()        data = {            "action" : "set_child_value",            "data" : {                "key" :  parent_key,                "value" : {child_key : child_value}            }        }        result = requests.patch(self.URL, headers=header, json=data)        return result当我发送此请求时,Zapier 以 200 状态代码响应,但存储未更新。任何想法我可能会错过什么?
查看完整描述

2 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

我能够通过将我的请求从 PATCH 修改为 PUT 来更新特定的子值。我不得不取消以下数据结构:


data = {

            "action" : "set_child_value",

            "data" : {

                "key" :  parent_key,

                "value" : {child_key : child_value}

            }

而是将其发送为:


data = {

            parent_key : {child_key : child_value}

           }

我更新的请求看起来像:


def update_child(self, parent_key, child_key, child_value):


        header = self.generate_header()


        data = {

            parent_key : {child_key : child_value}

            }



        result = requests.put(self.URL, headers=header, json=data)

        return result

我之前尝试的补丁方法从未真正解决过这个问题,它确实适用于其他 Zapier 存储方法,例如“pop_from_list”和“push_to_list”。无论如何,对于遇到相同问题的任何人来说,这都是一个合适的解决方案。


查看完整回答
反对 回复 2021-07-28
  • 2 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信