根据此处的文档:
https://cloud.google.com/storage/docs/json_api#patch
设置:
"metadata": null
将清除元数据,而设置:
{
"metadata": {"NEW_KEY" : "NEW_VALUE"}
}
实际上会添加到元数据中,如下所示:
"metadata": {
"EXISTING_KEY" : "EXISTING_VALUE",
"NEW_KEY" : "NEW_VALUE"
}
假设我不想清除元数据,也不想添加键/值对,而是用一组新的键/值对替换元数据字段。例如,假设我当前的元数据是:
"metadata": {
"EXISTING_KEY" : "EXISTING_VALUE"
}
我发送了一个 PATCH 请求,如下所示:
PATCH ...
"metadata": {
"KEY1" : "VALUE1",
"KEY2" : "VALUE2",
"NO_OTHER_KEYS" : "NO_OTHER_VALUES"
},
这应该导致元数据是:
"metadata": {
"KEY1" : "VALUE1",
"KEY2" : "VALUE2",
"NO_OTHER_KEYS" : "NO_OTHER_VALUES"
},
不是:
"metadata": {
"EXISTING_KEY" : "EXISTING_VALUE",
"KEY1" : "VALUE1",
"KEY2" : "VALUE2",
"NO_OTHER_KEYS" : "NO_OTHER_VALUES"
},
即旧钥匙不见了。
现在我可以通过两个 PATCH 请求来实现这一点,首先发送:
"metadata": null
然后:
"metadata": {
"KEY1" : "VALUE1",
"KEY2" : "VALUE2",
"NO_OTHER_KEYS" : "NO_OTHER_VALUES"
},
可能会导致所有旧密钥被删除,但我可以通过一个补丁请求来实现这一点吗?
要删除现有密钥,请将
"EXISTING_KEY" : null
添加到您的补丁请求中。
"metadata": {
"EXISTING_KEY" : null
"KEY1" : "VALUE1",
"KEY2" : "VALUE2",
"NO_OTHER_KEYS" : "NO_OTHER_VALUES"
},