通过REST

时间:2019-02-18 03:13:07

标签: r rest azure azure-resource-manager httr

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

但是,当我尝试通过传递空的tags字段来删除 all 个标记时,

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

{
  "tags": {}
}

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

是否可以通过REST删除资源/资源组上的所有标签?

2 个答案:

答案 0 :(得分:1)

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

请求正文:

{
  tags: {}
}

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

答案 1 :(得分:0)

这实际上是due to a wart的httr程序包如何处理请求正文中的空字段。如果正文是列表,则将这些字段静默删除,然后再发送给主机。

解决方法是事先将数据转换为JSON,而不是依靠httr来完成:

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