如何使用 HotChocolate GraphQL 将 Query / Mutation / Subscription 类型拆分为多个文件?

How can you split the Query / Mutation / Subscription type into multiple files with HotChocolate GraphQL?

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

在Asp.Net中,我这样写:

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

如果我同时只使用一个查询 class(狗或汽车),它工作正常。但是如何使用两者呢? 我已经搜索了很多,但找不到答案。

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

您可以在两种查询类型上方使用 [ExtendObjectType(Name = "Query")] 属性。这适用于订阅 ([ExtendObjectType(Name = "Subscription")]) 和突变 ([ExtendObjectType(Name = "Mutation")]) 以相同的方式。

此属性用于合并同一 HotChocolate 服务器中的任意两种 graphql 类型。 name 值必须是要将 C# class 合并到的 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