C# GraphQL查询语法错误
我使用下面的代码在我的系统中实现一个通用查询C# GraphQL查询语法错误,c#,.net,graphql,graphql-dotnet,C#,.net,Graphql,Graphql Dotnet,我使用下面的代码在我的系统中实现一个通用查询 if (!string.IsNullOrEmpty(query)) { var urlDecode = HttpUtility.UrlDecode(query); var result = await (_searchRepository.ExecuteQuery(urlDecode.Replace("\t", "").R
if (!string.IsNullOrEmpty(query))
{
var urlDecode = HttpUtility.UrlDecode(query);
var result =
await (_searchRepository.ExecuteQuery(urlDecode.Replace("\t", "").Replace(@"\", string.Empty))).ConfigureAwait(false);
response = Request.CreateResponse(HttpStatusCode.OK,
new GeneralOutput() {HasError = false, Data = result});
}
else
{
response = Request.CreateResponse(HttpStatusCode.OK,
new GeneralOutput() { HasError = true, Data = null , ErrorType = ErrorType.ValidationError , Message = "Empty Query String"});
}
Execute查询看起来像什么
public async Task<string> ExecuteQuery(string querystring)
{
try
{
var result = await new DocumentExecuter().ExecuteAsync(_ =>
{
_.Schema = new Schema { Query = new ViewerType() };
_.Query = querystring;
}).ConfigureAwait(false);
var json = new DocumentWriter(Formatting.None, null).Write(result);
return json;
}
catch (Exception e)
{
var logInstance = LogManager.GetCurrentClassLogger();
logInstance?.Error(e,
$" {MethodBase.GetCurrentMethod().Name} => {e.Message}{Environment.NewLine}{e.StackTrace}");
return null;
}
}
我总是犯错误
"{\"errors\":[{\"message\":\"Syntax Error GraphQL (1:19) Expected $, found Name \\\"userTwelveDigits\\\"\\n1: query MediaSearch(userTwelveDigits:\\\"12345678\\\",fromcreationDate:null,tocreationDate:null,mediaId:null,versionTypeId:null,keyword:null) { MediaTitle MediaIdentifier }\\n ^\\n\"}]}"
这是一个常见的错误,它使用GraphQL的“操作名”作为查询字段,更像是一个修饰函数名。下面是一个查询,用于获取您请求的数据:
query MyQueryName {
MediaSearch {
MediaTitle
MediaIdentifier
}
}
这里是你如何传递参数的-它们在字段中进行:
query MyQueryName {
MediaSearch(mediaId: "asdf") {
MediaTitle
MediaIdentifier
}
}
如果您想了解更多关于GraphQL的信息,我建议您快速浏览网站上关于查询和模式的“学习”部分:
请注意,上面的MyQueryName
可以是任何内容,并且根本不会影响查询结果。它只是用于服务器端日志记录,因此您可以轻松识别此查询
编辑-我写了一篇关于查询的所有不同部分的博文,灵感来自这个问题 非常感谢,但我尝试了查询MyQueryName{mediaSearch{mediaTitle mediaIdentifier}}获取此错误消息“{”data\”:null,\“errors\”:[{“message\”:\“error trusting to resolve mediaSearch.\”,“locations\”:[{“Line\”:1,\“Column\”:20}]}]“任何建议,请查看您的代码中是否存在运行时错误,但是查询是有效的。我将查看
ExecuteQuery
方法的结果中的内部错误。
query MyQueryName {
MediaSearch {
MediaTitle
MediaIdentifier
}
}
query MyQueryName {
MediaSearch(mediaId: "asdf") {
MediaTitle
MediaIdentifier
}
}