0

我正在学习 Grafana,以及如何在 Powershell 中与 API 交互。我能够使用 Grafana HTTP API 创建仪表板,但是我无法获得相同的 API 来创建数据源。我的代码如下:

$header = @{"Authorization" = "Bearer apikey="}
$createDatasourceUri = "http://localhost:3000/api/datasources"
$createDatasourcejson = @'
{
    "datasource": {
        "name": "prometheusApiTest",
        "type": "prometheus",
        "url": "http://localhost:9090",
        "access": "proxy",
        "basicAuth": false,
        "isDefault": true
    }
}
'@

$datasourceParameters = @{
    Method = "POST"
    URI = $createDatasourceUri
    Body = $createDatasourcejson
    Headers = $header
    ContentType = "application/json"
}

Invoke-RestMethod @datasourceParameters 

我收到以下错误:

Invoke-RestMethod : [{"fieldNames":["Name"],"classification":"RequiredError","message":"Required"},{"fieldNames":["Type"],"classification":"RequiredError","message":"Required"},{"fieldNames":["Access"],"classificat
ion":"RequiredError","message":"Required"}]

我不知道发生了什么事。我能找到的关于这个错误的任何信息都表明我需要将 ContentType 指定为“application/json”,但我已经非常清楚地这样做了。当我在该 API 端点上执行“GET”时,我确实收到了数据,即使复制返回的数据仍然会导致上述错误。我完全不知所措,因为同样的代码可以创建仪表板(尽管仪表板具有正确的 json 有效负载)。有任何想法吗?

4

1 回答 1

0

数据源 API 的 Grafana 文档只有datasource响应中的元素,而不是初始调用。不需要我的代码的第 5 行以及该元素的后续 {},并且删除了这些行的脚本功能。

于 2021-07-12T16:21:05.200 回答