以编程方式更新 Zapier 存储

我一直在通过 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 状态代码响应,但存储未更新。任何想法我可能会错过什么?


肥皂起泡泡
浏览 143回答 2
2回答

慕虎7371278

我能够通过将我的请求从 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”。无论如何,对于遇到相同问题的任何人来说,这都是一个合适的解决方案。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python