Graphql 如何格式化来自java/groovy客户端的NewRelic NerdGraph API调用?
我试图使用NerdGraph API从NewRelic中提取一些度量数据。它在使用curl时工作得很好,但是我在从groovy/java客户机调用它时遇到了问题。 NerdGraph API请求如下:Graphql 如何格式化来自java/groovy客户端的NewRelic NerdGraph API调用?,graphql,newrelic,graphql-java,Graphql,Newrelic,Graphql Java,我试图使用NerdGraph API从NewRelic中提取一些度量数据。它在使用curl时工作得很好,但是我在从groovy/java客户机调用它时遇到了问题。 NerdGraph API请求如下: { actor { entitySearch(query: "name like 'my-service-name'") { results { entities { t
{
actor {
entitySearch(query: "name like 'my-service-name'") {
results {
entities {
tags {
key
values
}
guid
}
}
}
}
}
以下curl调用工作正常:
curl --location --request POST 'https://api.newrelic.com/graphql' --header 'API-Key: MY-API-KEY' --header 'Content-Type: application/json' --data-raw '{"query":"{\n actor {\n entitySearch(query: \"name like '\''my-service-name'\''\") {\n results {\n entities {\n tags {\n key\n values\n }\n guid\n }\n }\n }\n }\n}"}'
在我的groovy代码中,我试图像这样实例化请求:
String request = '''
{ "query": "{
actor {
entitySearch(query: "name like 'my-service-name'") {
results {
entities {
tags {
key
values
}
guid
}
}
}
}
}"
}
'''
…或者这个:
String request = '{"query":"{\n actor {\n entitySearch(query: \"name like \'my-service-name\'\") {\n results {\n entities {\n tags {\n key\n values\n }\n guid\n }\n }\n }\n }\n}"}'
两者都不起作用。我收到->400:错误的请求
我应该如何转义特殊字符(引号和双引号)以使其正常工作?我在C#中遇到了类似的问题,并开始寻找答案。希望您已经找到了解决方案,但对我来说,关键是以字节[]而不是字符串的形式发送数据
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://api.newrelic.com/graphql"))
{
string payload = @"{actor {account(id: NEWRELICACCOUNTID) {nrql(query: ""SELECT rate(count(*), 1 hour) AS 'RequestsPerHour' FROM Transaction TIMESERIES 1 hour FACET `Channel` EXTRAPOLATE SINCE 1 weeks ago"") {results}}}}";
request.Headers.TryAddWithoutValidation("API-Key", "MYAPIKEY");
request.Content = new ByteArrayContent(encoding.GetBytes(payload));
var response = await httpClient.SendAsync(request);
}
}
希望这对你或其他人有帮助