📅  最后修改于: 2023-12-03 14:54:02.041000             🧑  作者: Mango
在C#中使用GraphQL(GQL)查询时,您可以使用参数来过滤查询结果并获取您需要的数据。本文将向您展示如何在C#中编写带参数的GQL查询。
首先,您需要在您的项目中安装GraphQL解析器。您可以在NuGet中找到这个包,并使用以下命令将其安装到您的项目中:
Install-Package GraphQL -Version {version number}
其中{version number}
是您要安装的版本号。
现在,我们可以开始编写带参数的GQL查询。下面是一个简单的查询,它返回一个电影的标题和导演名称:
var query = @"
query MyQuery($title: String, $director: String) {
movies(title: $title, director: $director) {
title
director {
name
}
}
}
";
在这个查询中,我们定义了两个参数:title
和director
。我们将这些参数传递给movies
查询,并返回相应的电影标题和导演名称。
接下来,我们需要为查询生成一个实例。我们可以使用GraphQL的GraphQLQuery
类来做到这一点:
var gql = new GraphQLQuery(query);
我们现在可以把查询发送给GraphQL API了,我们可以使用HttpClient在本例子中,我们使用的HttpClient
是在.NET Core平台上最佳的Http处理途径:
var client = new HttpClient
{
BaseAddress = new Uri("https://example.com/graphql")
};
var response = await client.PostAsync("", gql.ToJsonContent());
在这个示例中,我们向https://example.com/graphql发送了一个POST请求,并使用gql.ToJsonContent()
方法把查询转换为JSON payload。
要获取查询结果,您需要解析响应的内容。您可以使用GraphQLResponse
类的Deserialize
方法来解析结果:
var result = await response.Content.ReadAsStringAsync();
var gqlResponse = GraphQLResponse.Deserialize(result);
要使用我们的查询中定义的参数,我们需要在调用查询时传递它们。我们可以使用GraphQLQuery
类的AddVariable
方法来做到这一点:
var variables = new Dictionary<string, object>
{
{ "title", "The Matrix" },
{ "director", "Lana Wachowski" }
};
foreach (var variable in variables)
{
gql.AddVariable(variable.Key, variable.Value);
}
var response = await client.PostAsync("", gql.ToJsonContent());
在这个示例中,我们定义了一个variables
字典来存储我们要传递的参数。我们使用AddVariable
方法向查询中添加这些参数。
在本文中,我们向您展示了如何在C#中编写带参数的GQL查询。我们演示了如何使用GraphQL的GraphQLQuery
类来生成查询,并使用HttpClient在.NET Core上发送请求。我们还向您展示了如何使用AddVariable
方法传递查询参数。