1

我是 GraphQL 世界中的新人,并试图找到一种方法来拥有多种查询类型或如何将查询类型拆分为多个文件。我将 Hot Chocolate 用于 Asp.Net Core,一切看起来都很好并且工作正常。但是如果我需要在一个 GraphQL API 中组合几个查询呢?一些非常不相关的东西,fe DogsQuery 和 CarsQuery。

在 Asp.Net 中,我编写类似于:

public void ConfigureServices(IServiceCollection services)
{
    services
        .AddGraphQLServer()
            //.AddQueryType<DogsQuery>()
            .AddQueryType<CarsQuery>();
}

如果我同时只使用一个查询类(狗或汽车),它工作得很好。但是如何同时使用呢?我搜索了很多,但找不到答案。

4

1 回答 1

3

您不能在 graphql 中拥有多个 Query/Mutation/Subscription 类型,但您可以在 HotChocolate 中将这些类型拆分为多个文件。

您可以使用[ExtendObjectType(Name = "Query")]两种查询类型上方的属性。这同样适用于 Subscriptions ( [ExtendObjectType(Name = "Subscription")]) 和 Mutations ( [ExtendObjectType(Name = "Mutation")])。

此属性用于合并同一 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

于 2021-01-31T16:02:58.040 回答