GraphQL 是一种由 Facebook 开发的数据查询和操作语言,它提供了一种更高效、更灵活的方式来定义和查询 API。在 GraphQL 中,Schema 是一个非常重要的概念,它描述了 API 中可用的数据类型和查询操作。
GraphQL Schema 的定义
GraphQL Schema 由两个主要部分组成:Type 和 Query。Type 定义了 API 中可用的数据类型,而 Query 则定义了可用的查询操作。
Type
在 GraphQL 中,Type 是定义数据类型的基本单位。Type 可以是标量类型(如 String、Int、Boolean 等)或自定义类型(如 Object、Enum、Interface 等)。下面是一个自定义类型的例子:
type Person { id: ID! name: String! age: Int friends: [Person] }
在这个例子中,我们定义了一个名为 Person 的类型,它有四个字段:id、name、age 和 friends。其中,id 和 name 是必需的字段,而 age 和 friends 是可选的字段。friends 字段是一个列表类型,它包含多个 Person 类型的对象。
Query
在 GraphQL 中,Query 定义了可用的查询操作。每个查询操作都有一个名称和一个返回类型。下面是一个查询操作的例子:
type Query { person(id: ID!): Person }
在这个例子中,我们定义了一个名为 person 的查询操作,它接受一个 ID 参数,并返回一个 Person 类型的对象。
如何定义 GraphQL Schema
要定义 GraphQL Schema,我们需要使用 SDL(Schema Definition Language)。SDL 是一种类似于 JSON 的语言,它允许我们定义 Type 和 Query。下面是一个简单的 SDL 文件:
type Query { hello: String } schema { query: Query }
在这个例子中,我们定义了一个名为 hello 的查询操作,它返回一个 String 类型的值。然后,我们使用 schema 关键字指定了 Query 作为我们的根查询操作。
在实际开发中,我们可以使用各种编程语言来定义 GraphQL Schema。例如,使用 JavaScript 和 Apollo Server,我们可以这样定义一个简单的 GraphQL Schema:
-- -------------------- ---- ------- ----- - --- - - ------------------------- ----- -------- - ---- ---- ----- - ------ ------ - -- -------------- - ---------
在这个例子中,我们使用 gql 函数来定义 Type 和 Query。然后,我们将 Type 和 Query 导出,以便在 Apollo Server 中使用。
总结
GraphQL Schema 是 GraphQL API 的基础,它定义了可用的数据类型和查询操作。在定义 GraphQL Schema 时,我们需要使用 SDL 或编程语言来定义 Type 和 Query。通过学习 GraphQL Schema,我们可以更好地理解 GraphQL API 的工作原理,并更有效地开发和维护 GraphQL API。
参考资料
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/661265c0d10417a22230b462