graphql/utilities
模块包含用于 GraphQL 语言和类型对象的常用计算。你可以从 graphql/utilities
模块或是 graphql
根模块引入。如下:
import { introspectionQuery } from 'graphql'; // ES6 var { introspectionQuery } = require('graphql'); // CommonJS
内省(Introspection)
Schema Language
function buildSchema基于 GraphQL schema language 构建一个 Schema 对象。
function printSchema使用标准格式打印 schema。
function printIntrospectionSchema使用标准格式打印 schema 的内省特性。
function buildASTSchema基于分析后的 AST Schema 构建 schema。
function typeFromAST在 GraphQLSchema 的 AST 中查找一个类型引用。
function astFromValue基于一个 JavaScript 值生成一个 GraphQL Input Value AST。
Visitors
值验证
var introspectionQuery: string
GraphQL 内省查询,用于查询服务器的内省系统,得到足够的信息以重现服务器类型系统。
function buildClientSchema( introspection: IntrospectionQuery ): GraphQLSchema
构建客户端工具用的 GraphQLSchema。
假设客户端有运行内省查询的结果,创建并返回了一个 GraphQLSchema 实例,这个实例可以用于所有的 GraphQL.js 工具,但不能用于执行查询,因为内省并不代表有“解析器”、“分析”或者“序列化”函数,或者其他服务器内部机制。
function buildSchema(source: string | Source): GraphQLSchema {
基于 GraphQL schema language 创建一个 GraphQLSchema 对象。schema 将会使用默认解析器。关于 GraphQL schema language 的更多细节,请查看 schema language 文档 或者 schema language 速查表。
function printSchema(schema: GraphQLSchema): string {
使用 Schema Language 格式打印给定的 schema。
function printIntrospectionSchema(schema: GraphQLSchema): string {
使用 Schema Language 格式打印内建的内省 schema。
function buildASTSchema( ast: SchemaDocument, queryTypeName: string, mutationTypeName: ?string ): GraphQLSchema
这个函数需要一个 schema 文档的 ast(可通过 graphql/language/schema
的 parseSchemaIntoAST
生成)构建一个 GraphQLSchema 实例,这个实例可以用于所有的 GraphQL.js 工具,但不能用于执行查询,因为内省并不代表有“解析器”、“分析”或者“序列化”函数,或者其他服务器内部机制。
function typeFromAST( schema: GraphQLSchema, inputTypeAST: Type ): ?GraphQLType
给定一个出现在 GraphQL AST 和 Schema 中的类型名称,返回其在 schema 中对应的 GraphQLType。
function astFromValue( value: any, type?: ?GraphQLType ): ?Value
基于一个 JavaScript 值生成一个 GraphQL Input Value AST。
可选参数,一个 GraphQL 类型,用于消除类型原生值之间的歧义。
class TypeInfo { constructor(schema: GraphQLSchema) getType(): ?GraphQLOutputType { getParentType(): ?GraphQLCompositeType { getInputType(): ?GraphQLInputType { getFieldDef(): ?GraphQLFieldDefinition { getDirective(): ?GraphQLDirective { getArgument(): ?GraphQLArgument { }
TypeInfo 是一个工具类,在 GraphQL 文档 AST 的递归分析中的任何位置上,调用 enter(node)
和 leave(node)
的时候,可以追踪指定 GraphQL schema 中当前字段和类型定义。
function isValidJSValue(value: any, type: GraphQLInputType): string[]
给定一个 JavaScript 值和 GraphQL 类型,判断这个值是否能被这个类型接受。这个功能在验证运行时查询参数值的时候特别有用。
function isValidLiteralValue( type: GraphQLInputType, valueAST: Value ): string[]
验证器的工具可以判断 AST 字面量值是否是一个给定输入类型的有效值。
注意,这个功能只验证字面量值,并假设变量值是正确的类型。