Graphql中的架构和文档有什么区别?

时间:2019-12-19 21:38:09

标签: graphql code-generation

Graphql中的架构和文档有什么区别?

模式是这样的:

type Query {
   fo: String
}

但文档类似于:

query SomeQuery {
  foo {
    bar
  }
}

规范确实令人困惑https://graphql.github.io/graphql-spec/June2018/#sec-Language.Document

我始终使用架构,但是要在graphql-code-generator中生成客户端类型,它需要文档文件。 https://graphql-code-generator.com/docs/getting-started/documents-field

1 个答案:

答案 0 :(得分:1)

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

操作定义

query UsersQuery {
  users {
    id
    email
  }
}

片段定义

fragment UserFragment on User {
  id
  email
}

类型系统定义

type User {
  id: ID!
  email: String!
}

类型系统扩展

extend type User {
  name: String
}

操作和片段定义称为可执行定义。发送到GraphQL服务的文档必须仅包含可执行文件定义。类型系统定义和扩展用于描述模式-这就是为什么我们通常将它们称为模式定义语言(SDL)。模式是GraphQL服务的“集合类型系统功能”-基本上是表示GraphQL服务可以执行的所有操作的类型和指令的集合。

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