什么';Graphql中模式和文档的区别是什么?

什么';Graphql中模式和文档的区别是什么?,graphql,code-generation,Graphql,Code Generation,Graphql中的模式和文档有什么区别 模式如下所示: type Query { fo: String } 但这份文件是这样的: query SomeQuery { foo { bar } } 规范真的很混乱 我总是使用模式,但对于graphql代码生成器中的客户端类型生成,它需要文档文件 文档实际上是任何包含有效GraphQL语法的字符串。根据,文档包含一个或多个定义,其中定义可以是: 操作定义 query UsersQuery { users { id

Graphql中的模式和文档有什么区别

模式如下所示:

type Query {
   fo: String
}
但这份文件是这样的:

query SomeQuery {
  foo {
    bar
  }
}
规范真的很混乱


我总是使用模式,但对于graphql代码生成器中的客户端类型生成,它需要文档文件

文档实际上是任何包含有效GraphQL语法的字符串。根据,文档包含一个或多个定义,其中定义可以是:

操作定义

query UsersQuery {
  users {
    id
    email
  }
}
fragment UserFragment on User {
  id
  email
}
type User {
  id: ID!
  email: String!
}
片段定义

query UsersQuery {
  users {
    id
    email
  }
}
fragment UserFragment on User {
  id
  email
}
type User {
  id: ID!
  email: String!
}
类型系统定义

query UsersQuery {
  users {
    id
    email
  }
}
fragment UserFragment on User {
  id
  email
}
type User {
  id: ID!
  email: String!
}
类型系统扩展

extend type User {
  name: String
}
操作和片段定义称为可执行定义。发送到GraphQL服务的文档必须仅包含可执行定义。类型系统定义和扩展用于描述模式——这就是为什么我们通常称它们为模式定义语言(schema Definition Language,SDL)。模式是GraphQL服务的“集合类型系统功能”——它基本上是一个类型和指令的集合,表示GraphQL服务所能做的一切

模式可以使用类型系统定义来描述,但是说类型定义就是模式并不准确,因为模式本身也包括实际的字段解析逻辑