通过 REST 删除 Azure resource/resgroup 上的所有标签

Deleting all tags on an Azure resource/resgroup via REST

根据文档,我可以通过发出 PATCH 请求并在正文中设置 tags 字段来更新 resource group or resource 上的标签。这适用于设置一个或多个标签,或删除一个或多个标签(我只是在请求中保留了标签名)。

但是,当我尝试通过传递一个空的 tags 字段来删除 所有 标签时:

PATCH https://management.azure.com/{....}

{
  "tags": {}
}

没用。对于资源,我收到 400 错误 Request must specify an account property to update,而对于资源组,它只是保持当前标签不变。

有没有办法通过 REST 删除 resource/resource 组中的所有标签?

您可以尝试使用此 api: Resources - Update By Id,它应该适用于资源和资源组。我已经用资源组和资源(我的示例是一个网络应用程序)对其进行了测试,一切正常。

请求正文:

{
  tags: {}
}

注意:如果出现NoRegisteredProviderFound错误,请根据错误消息更改api版本。

这实际上是 due to a wart httr 包如何处理请求正文中的空字段。如果正文是一个列表,这些字段在发送到主机之前会被静默删除。

修复方法是事先将数据转换为 JSON,而不是依赖 httr 来完成:

httr::PATCH("https://management.azure.com/{....}",
    body=jsonlite::toJSON(body, auto_unbox=TRUE),
    encoding="raw",
    ...)