使用GraphQL.NET,我为这样的突变定义了一个非空返回类型(例如LoginPayload):
type MyMutation {
login(input: LoginInput!): LoginPayload!
}在C#中,它看起来如下所示:
FieldAsync<NonNullGraphType<LoginPayloadType>>(
"login",
arguments: new QueryArguments(
new QueryArgument<NonNullGraphType<LoginInputType>> { Name = "input" }),
resolve: async context =>
{
//...
});基于此架构定义,客户端希望响应数据永远不会为空。但是,如果在解析器中抛出异常,GraphQL.NET的响应如下:
{
"data": {
"login": null
},
"errors": [
{
"message": "GraphQL.ExecutionError: some exception thrown",
...
}
]
}当出现错误时,如何配置GraphQL.Net以排除data属性,使其看起来如下所示?
{
"errors": [
{
"message": "GraphQL.ExecutionError: some exception thrown",
...
}
]
}发布于 2020-01-29 16:48:27
如果这是您实际看到的行为,那么它就是一个bug,因为这不是应该发生的,根据规格。
由于非空类型字段不能为空,因此将传播字段错误,由父字段处理。如果父字段可能为null,则解析为null,否则如果它是非空类型,则字段错误将进一步传播到它的父字段.如果从请求的根到字段错误源的所有字段都返回非空类型,那么响应中的“数据”条目应该为null。
https://stackoverflow.com/questions/59971333
复制相似问题