我一直在通过 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 状态代码响应,但存储未更新。有什么我可能遗漏的想法吗?
最佳答案
Zapier Store 似乎没有验证“action”和“data”字段之后的请求正文。
当您将 "data"
字段设置为数组发出请求时,您会触发一个验证错误,该错误描述了数据字段的架构(这是一种查找 API 文档的方式!嗯)。
在请求正文中,“set_child_value”操作的数据字段架构是:
{
"action" : {
"enum": [
"delete",
"increment_by",
"set_child_value",
"list_pop",
"set_value_if",
"remove_child_value",
"list_push"
]
},
"data" : {
"key" : {
"type": "object"
},
"values" : {
"type": "object"
}
}
}
请注意,它是"values" 而不是"value"
关于python - 以编程方式更新 Zapier 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52965280/