检测 Graphql Hotchocolate 查询中请求的字段

问题描述 投票:0回答:1

我有一个有两个字段的 graphql 查询。它们来自单独的、缓慢的源,其中一个或两个可能会导致错误,在本例中表示为 null。

如果一个或两个字段都不为空,那么我想返回我可以返回的值。如果两者都为 null,那么我想返回 GraphQL 错误。我可以使用这样的查询来做到这一点:

[ExtendObjectType(OperationTypeNames.Query)]
public class FooQuery
{
    [GraphQLName("searchFoo")]
    public async Task<Foo> SearchFoo(FooRequest request)
    {
        var foo = new Foo {
            Bar = GetBar(), // Slow, may return null
            Baz = GetBaz()  // Slow, may return null
        }
        if (Bar == null && Baz == null) {
            throw new GraphQLException(...);
        }
        return foo;
    }
}

用户可能只对

Bar
感兴趣,因此未在其请求中包含
Baz

问:有没有办法可以检测到所要求的字段,并快捷地处理

Baz

我知道这意味着

Bar
的错误响应将导致整个查询返回错误,即使数据实际上可用于
Baz
。我们已经有客户端调用此查询,所以我不想将其拆分为单独的查询,因为这需要更改我无法控制的客户端代码。

c# graphql hotchocolate
1个回答
0
投票

这可以通过 Hot Chocolate 14 中的选择 api 来完成。

这是一个 YouTube 片段,展示了它是如何工作的。 https://youtu.be/XZVpimb6sKg

© www.soinside.com 2019 - 2024. All rights reserved.