gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 01:50:45 25 4
gpt4 key购买 nike

https://facebook.github.io/graphql/draft/#sec-Schema-Introspection

type __Schema {
types: [__Type!]!
queryType: __Type!
mutationType: __Type
subscriptionType: __Type
directives: [__Directive!]!
}

type __Type {
kind: __TypeKind!
name: String
description: String
...

https://developer.github.com/v4/guides/intro-to-graphql/#discovering-the-graphql-api下载的信息(curl -H "Authorization: bearer token"https://api.github.com/graphql)

(文件开头

{
"data": {
"__schema": {
"queryType": {
"name": "Query"
},
"mutationType": {
"name": "Mutation"
},
"subscriptionType": null,
"types": [
{
"kind": "SCALAR",
"name": "Boolean",
...

问题:

我对此进行了解释,因此此 GitHub 架构结果无效,因为 queryType 未指定 kind,它是 nonNullable(kind :__TypeKind!)

这个结果是否违反了架构规则,还是我遗漏了什么?

最佳答案

此响应通过了验证,因为缺少字段与返回 null 的字段不同。只有在一开始就没有请求的字段才会从响应中丢失。

如果你去 GitHub 的 GraphQL Explorer ,您可以自己生成一个内省(introspection)查询,请求 kind 字段作为 queryType 字段选择集的一部分,它将返回具有非空值的字段。

{
__schema {
queryType {
kind
}
}
}

响应:

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

通过向某个端点发出 GET 请求来获取架构很方便,但这不是内省(introspection)架构的标准方法。相反,您应该使用端点本身所需的任何选择集来发出请求。这个问题使以这种不太传统的方式进行操作的缺点显而易见。在这种情况下,无论 GitHub 在幕后为您进行什么内省(introspection)查询,都会丢失一个或多个本可以请求的字段。因为您不是进行自省(introspection)查询的人,所以您不知道响应的形状会发生什么。

关于graphql - GitHub API 是否为架构查询返回无效结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53212856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com