GCS“PATCH”能否在一个请求中完全替换元数据

问题描述 投票:0回答:1

根据此处的文档:

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"
},

可能会导致所有旧密钥被删除,但我可以通过一个补丁请求来实现这一点吗?

rest http google-cloud-platform google-api google-cloud-storage
1个回答
0
投票

要删除现有密钥,请将

"EXISTING_KEY" : null
添加到您的补丁请求中。

"metadata": {
  "EXISTING_KEY" : null
  "KEY1" : "VALUE1",
  "KEY2" : "VALUE2",
  "NO_OTHER_KEYS" : "NO_OTHER_VALUES"
},
© www.soinside.com 2019 - 2024. All rights reserved.