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

问题描述 投票:0回答:1

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

graphql code-generation
1个回答
0
投票

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

操作定义

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服务可以执行的所有操作的类型和指令的集合。

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

© www.soinside.com 2019 - 2024. All rights reserved.