过滤或区分内置和自定义graphql类型

时间:2019-05-14 12:11:26

标签: graphql graphql-js introspection

当试图对graphql api运行introspectionQuery时,我试图找到一种方法来区分(过滤掉)内置类型和自定义类型。在输出中似乎没有什么可靠的信息可以识别出内置的类型(除了“ system”类型前面的__之外)。

在这一点上,我什至找不到一个正式的列表,所以我最好的选择似乎是检查introspectionQuery输出并列出一个供将来使用的列表,希望什么都不会改变。

真的没有系统的方法来区分两者吗?

1 个答案:

答案 0 :(得分:0)

虽然规范确实指定每个实现应包括的标量类型并指定应如何序列化和解析这些标量,但实际上并没有在这些内置标量和任何其他标量之间进行区分GraphQL服务可能会公开。从功能上讲,“内置”类型和“自定义”类型没有区别。

有五个内置标量outlined by the spec。这些将来极不可能改变。

  • Int
  • 浮动
  • 字符串
  • 布尔值
  • ID

也有几种“元”类型明确用于自省。这些在here中概述。

  • __ Schema
  • __ Type
  • __ Field
  • __ InputValue
  • __ EnumValue
  • __ TypeKind
  • __指令
  • __ DirectiveLocation

以两个下划线(__开头的名称是保留名称,因此以这种方式开头的任何类型的名称都可以安全地分类为“内置”。

从您的问题到您试图在“内置”类型和“自定义”类型之间进行区分的目的尚不清楚,但我想对于大多数目的,我们将上述内容视为“内置”类型类型和其他任何“自定义”。