Graphql GitHub API是否为架构查询返回无效结果?

Graphql GitHub API是否为架构查询返回无效结果?,graphql,Graphql,从(curl-H“授权:承载令牌”下载的信息https://api.github.com/graphql) (文件开头) 问题: 我解释了这一点,因此此GitHub架构结果无效,因为queryType没有指定kind,它是不可为空的(kind:u TypeKind!) 此结果是否违反了架构规则,或者我是否遗漏了某些内容?此响应通过验证,因为缺少的字段与返回null的字段不同。只有在一开始没有请求字段时,响应才会遗漏该字段 如果您转到GitHub,您可以自己生成一个内省查询,请求kind字段作为q

从(
curl-H“授权:承载令牌”下载的信息https://api.github.com/graphql

(文件开头)

问题: 我解释了这一点,因此此GitHub架构结果无效,因为
queryType
没有指定
kind
,它是
不可为空的(
kind:u TypeKind!)


此结果是否违反了架构规则,或者我是否遗漏了某些内容?

此响应通过验证,因为缺少的字段与返回null的字段不同。只有在一开始没有请求字段时,响应才会遗漏该字段

如果您转到GitHub,您可以自己生成一个内省查询,请求
kind
字段作为
queryType
字段选择集的一部分,它将返回非空值的字段

{
  __schema {
    queryType {
      kind
    }
  }
}
答复:

{
  "data": {
    "__schema": {
      "queryType": {
        "kind": "OBJECT"
      }
    }
  }
}

通过向某个端点发出
GET
请求来获取模式是很方便的,但这不是反思模式的标准方法。相反,您应该使用端点本身所需的任何选择集来进行请求。这个问题表明了这种不太传统的方法的缺点。在这个c例如,GitHub在后台为您进行的任何内省查询都缺少一个或多个可能被请求的字段。因为您不是进行内省查询的人,您不知道在响应的形状方面会发生什么。

回答得很好!非常有帮助。
{
  __schema {
    queryType {
      kind
    }
  }
}
{
  "data": {
    "__schema": {
      "queryType": {
        "kind": "OBJECT"
      }
    }
  }
}