问题描述
我是 GraphQL 世界的新人,并试图找到一种方法来在 GraphQL 中使用很少的查询类型。 我将 Hot Chocolate 用于 Asp.Net Core,一切看起来都不错并且可以正常工作。 但是如果我需要在一个 GraphQL API 中组合几个查询怎么办?一些非常不相关的东西,例如DogsQuery 和 CarsQuery。
在Asp.Net中,我写的类似:
public void ConfigureServices(IServiceCollection services)
{
services
.AddGraphQLServer()
//.AddQueryType<DogsQuery>()
.AddQueryType<CarsQuery>();
}
如果我同时只使用一个 Query 类(Dogs 或 Cars),效果很好。但是如何同时使用两者呢? 我搜索了很多,但找不到答案。
解决方法
您可以在两种查询类型上方使用 [ExtendObjectType(Name = "Query")]
属性。此属性用于合并同一 HotChocolate 服务器中的任意两种 graphql 类型。名称值必须是您要将 C# 类合并到的 GraphQl 类型的名称。在这种情况下,它是 Query
。
这样做之后,您可以像这样将类型添加到您的服务器:
public void ConfigureServices(IServiceCollection services)
{
services
.AddGraphQLServer()
.AddQueryType(d => d.Name("Query"))
.AddTypeExtension<DogsQuery>()
.AddTypeExtension<CarsQuery>();
}
您可以在 Github 上的研讨会示例中找到此内容以及更多有用的内容: https://github.com/ChilliCream/graphql-workshop