GraphQL

graphql/utilities

graphql/utilities 模块包含用于 GraphQL 语言和类型对象的常用计算。你可以从 graphql/utilities 模块或是 graphql 根模块引入。如下:

import { introspectionQuery } from 'graphql'; // ES6
var { introspectionQuery } = require('graphql'); // CommonJS

概览 #

内省(Introspection)

Schema Language

Visitors

值验证

内省(Introspection) #

introspectionQuery #

var introspectionQuery: string

GraphQL 内省查询,用于查询服务器的内省系统,得到足够的信息以重现服务器类型系统。

buildClientSchema #

function buildClientSchema(
  introspection: IntrospectionQuery
): GraphQLSchema

构建客户端工具用的 GraphQLSchema。

假设客户端有运行内省查询的结果,创建并返回了一个 GraphQLSchema 实例,这个实例可以用于所有的 GraphQL.js 工具,但不能用于执行查询,因为内省并不代表有“解析器”、“分析”或者“序列化”函数,或者其他服务器内部机制。

Schema 表示 #

buildSchema #

function buildSchema(source: string | Source): GraphQLSchema {

基于 GraphQL schema language 创建一个 GraphQLSchema 对象。schema 将会使用默认解析器。关于 GraphQL schema language 的更多细节,请查看 schema language 文档 或者 schema language 速查表

printSchema #

function printSchema(schema: GraphQLSchema): string {

使用 Schema Language 格式打印给定的 schema。

printIntrospectionSchema #

function printIntrospectionSchema(schema: GraphQLSchema): string {

使用 Schema Language 格式打印内建的内省 schema。

buildASTSchema #

function buildASTSchema(
  ast: SchemaDocument,
  queryTypeName: string,
  mutationTypeName: ?string
): GraphQLSchema

这个函数需要一个 schema 文档的 ast(可通过 graphql/language/schemaparseSchemaIntoAST 生成)构建一个 GraphQLSchema 实例,这个实例可以用于所有的 GraphQL.js 工具,但不能用于执行查询,因为内省并不代表有“解析器”、“分析”或者“序列化”函数,或者其他服务器内部机制。

typeFromAST #

function typeFromAST(
  schema: GraphQLSchema,
  inputTypeAST: Type
): ?GraphQLType

给定一个出现在 GraphQL AST 和 Schema 中的类型名称,返回其在 schema 中对应的 GraphQLType。

astFromValue #

function astFromValue(
  value: any,
  type?: ?GraphQLType
): ?Value

基于一个 JavaScript 值生成一个 GraphQL Input Value AST。

可选参数,一个 GraphQL 类型,用于消除类型原生值之间的歧义。

Visitors #

TypeInfo #

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 中当前字段和类型定义。

值验证 #

isValidJSValue #

function isValidJSValue(value: any, type: GraphQLInputType): string[]

给定一个 JavaScript 值和 GraphQL 类型,判断这个值是否能被这个类型接受。这个功能在验证运行时查询参数值的时候特别有用。

isValidLiteralValue #

function isValidLiteralValue(
  type: GraphQLInputType,
  valueAST: Value
): string[]

验证器的工具可以判断 AST 字面量值是否是一个给定输入类型的有效值。

注意,这个功能只验证字面量值,并假设变量值是正确的类型。

继续阅读 →graphql/validation