使用 devOps Rest api 创建带有查询设置的小部件时出现问题

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

我无法确定问题的原因。我正在尝试使用 Create Widget Rest API (https://learn.microsoft.com/en-us/rest/api/azure/devops/dashboard/widgets/create?view=azure-devops-rest-7.1&tabs =HTTP

我面临的问题是,当我尝试添加设置参数以引用特定小部件的查询时,我收到错误。

{'$id': '1',
 'innerException': None,
 'message': 'Value cannot be null.\r\nParameter name: widget',
 'typeName': 'System.ArgumentNullException, mscorlib',
 'typeKey': 'ArgumentNullException',
 'errorCode': 0,
 'eventId': 0
}

这是我用于 POST Create Widget API 的有效负载

payload = {
  "name": "Open Issues",
  "position": {
      "row": 2, 
      "column": 6
  },
  "size": {
      "rowSpan": 1, 
      "columnSpan": 1
  },
  "settings": {
      "defaultBackgroundColor":"#51399f",
      "queryId":"2d5d4371-bb0d-4984-b277-f71eca948d34",
      "queryName":"Open Issues",
      "colorRules":[{
          "isEnabled":True,
          "backgroundColor":"#339947",
          "thresholdCount":0,
          "operator":"<="}],
      "lastArtifactName": "Open Issues"
  },
  "settingsVersion": {    
      "major": 1,    
      "minor": 0,    
      "patch": 0 
  },
  "contributionId": "ms.vss-dashboards-web.Microsoft.VisualStudioOnline.Dashboards.QueryScalarWidget"
}

如果我设置“settings”:“null”,它会毫无问题地创建小部件(但缺少查询引用)。

我已经使用了 Get Widgets,以确保我使用正确的格式,但仍然收到错误。通过 Get Widget 调用,我得到以下格式(这正是我正在使用的格式):

{
    "id": "8d8697f3-a2db-4df8-8c15-26374c1191d9",
    "eTag": "14",
    "name": "Open Issues",
    "position": {
        "row": 2,
        "column": 6
    },
    "size": {
        "rowSpan": 1,
        "columnSpan": 1
    },
    "settings": {
        "defaultBackgroundColor": "#51399f",
        "queryId": "f525ec14-3d75-4798-b014-9513c79fd0aa",
        "queryName": "Open Issues",
        "colorRules": [
            {
                "isEnabled": true,
                "backgroundColor": "#339947",
                "thresholdCount": 0,
                "operator": "<="
            }
        ],
        "lastArtifactName": "Open Issues"
    },
    "settingsVersion": {
        "major": 1,
        "minor": 0,
        "patch": 0
    }
}

还有其他人遇到过这个问题吗?或者有人设法让它发挥作用吗?

非常欢迎任何帮助:)谢谢!

azure-devops azure-devops-rest-api
1个回答
0
投票

使用相同的请求正文时,我可以重现相同的问题。

问题原因是设置字段的格式有问题。

设置字段的值作为整个字符串而不是作为对象传递。

要解决此问题,您可以更改为使用以下请求正文:

{
  "name": "Open Issues",
  "position": {
      "row": 2, 
      "column": 6
  },
  "size": {
      "rowSpan": 1, 
      "columnSpan": 1
  },
    "settings": "{\"defaultBackgroundColor\":\"#51399f\",\"queryId\":\"2d5d4371-bb0d-4984-b277-f71eca948d34\",\"queryName\":\"Open Issues\",\"colorRules\":[{\"isEnabled\":true,\"backgroundColor\":\"#339947\",\"thresholdCount\":0,\"operator\":\"<=\"}],\"lastArtifactName\":\"Open Issues\"}",

  "settingsVersion": {    
      "major": 1,    
      "minor": 0,    
      "patch": 0 
  },
  "contributionId": "ms.vss-dashboards-web.Microsoft.VisualStudioOnline.Dashboards.QueryScalarWidget"
}
© www.soinside.com 2019 - 2024. All rights reserved.