根据文档,我可以通过发出PATCH请求并在正文中设置resource group字段来更新resource或tags
上的标签。这适用于设置一个或多个标签,或删除一个或多个标签(我只是将标记名留在请求之外)。
但是,当我尝试通过传递一个空的tags
字段删除所有标记时:
PATCH https://management.azure.com/{....}
{
"tags": {}
}
它不起作用。对于资源,我得到400错误Request must specify an account property to update
,而对于资源组,它只是保持当前标记不变。
有没有办法通过REST删除资源/资源组上的所有标签?
您可以尝试使用此api:Resources - Update By Id,它应该同时适用于资源和资源组。我用资源组和资源(我的示例是一个Web应用程序)测试它,一切正常。
请求正文:
{
tags: {}
}
注意:如果您收到NoRegisteredProviderFound
错误,请更改api-version取决于错误消息。
这实际上是due to a wart中httr包如何处理请求体中的空字段。如果正文是一个列表,则会在发送到主机之前以静默方式删除这些字段。
解决方法是事先将数据转换为JSON,而不是依赖于httr来执行此操作:
httr::PATCH("https://management.azure.com/{....}",
body=jsonlite::toJSON(body, auto_unbox=TRUE),
encoding="raw",
...)