php datadog 的 curl api

php curl for datadog api

我正在尝试为 datadog api 编写 php curl,但它 return 内部错误。这在 bash 脚本中有效,但在 phpcurl 中转换时抛出错误。有人可以帮我解决这个问题吗?

$data = [
    'tags' =>  '[env:prod]'

];
    $headers = [
        'Accept: application/json',
        'Content-Type: application/json'
    ];
     $tagUrl="https://app.datadoghq.com/api/v1/tags/hosts/".$host."?api_key=".$api_key."&application_key=".$app_key;

        $http_method='POST';
        $ch=curl_init();
        curl_setopt($ch, CURLOPT_URL, $tagUrl);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
        curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
        $out=curl_exec($ch);

您用于发送数据的格式不符合 documentation,您的呼叫无法完成。

如果您将 $data 更改为:

,通话将正常进行
$data = [ 'tags' => ['env:prod'] ];

同意 return 由 API 编辑的错误并没有真正帮助,在 Datadog 中提交了一个问题以更正该行为并且 return 正确的错误代码而不是 500 (它实际上是 500,您可以在执行 curl 会话后通过打印 curl_getinfo($ch) 来查看它)。