首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GraphQL.Net -防止突变异常上的空数据

GraphQL.Net -防止突变异常上的空数据
EN

Stack Overflow用户
提问于 2020-01-29 16:18:45
回答 1查看 785关注 0票数 1

使用GraphQL.NET,我为这样的突变定义了一个非空返回类型(例如LoginPayload):

代码语言:javascript
复制
type MyMutation {
  login(input: LoginInput!): LoginPayload!
}

在C#中,它看起来如下所示:

代码语言:javascript
复制
    FieldAsync<NonNullGraphType<LoginPayloadType>>(
        "login",
        arguments: new QueryArguments(
            new QueryArgument<NonNullGraphType<LoginInputType>> { Name = "input" }),
        resolve: async context =>
        {
            //...
        });

基于此架构定义,客户端希望响应数据永远不会为空。但是,如果在解析器中抛出异常,GraphQL.NET的响应如下:

代码语言:javascript
复制
{
  "data": {
    "login": null
  },
  "errors": [
    {
      "message": "GraphQL.ExecutionError: some exception thrown",
      ...
    }
  ]
}

当出现错误时,如何配置GraphQL.Net以排除data属性,使其看起来如下所示?

代码语言:javascript
复制
{
  "errors": [
    {
      "message": "GraphQL.ExecutionError: some exception thrown",
      ...
    }
  ]
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-29 16:48:27

如果这是您实际看到的行为,那么它就是一个bug,因为这不是应该发生的,根据规格

由于非空类型字段不能为空,因此将传播字段错误,由父字段处理。如果父字段可能为null,则解析为null,否则如果它是非空类型,则字段错误将进一步传播到它的父字段.如果从请求的根到字段错误源的所有字段都返回非空类型,那么响应中的“数据”条目应该为null。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59971333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档