📜  graphql 模式 (1)

📅  最后修改于: 2023-12-03 15:31:03.877000             🧑  作者: Mango

GraphQL 模式

GraphQL是一种API查询语言和运行时,它旨在减少客户端与服务器之间的通信次数,提高查询效率,并提高开发人员的可维护性。GraphQL使用一种称为Schema的语言来定义API的类型和操作,这被称为GraphQL模式。

GraphQL模式介绍

GraphQL模式由两个主要元素组成:类型和操作。类型定义了API中的数据类型,操作定义了可用于与这些类型交互的查询,变异和订阅。

类型

GraphQL模式中的类型可以是标量类型(例如字符串,数字等)或复杂类型(例如对象,链表等)。这些类型定义了API中可用的数据类型。以下是GraphQL模式中的一些常见类型:

type Person {
  id: ID!
  name: String!
  age: Int!
  skills: [String!]!
}

type Query {
  person(id: ID!): Person
  people: [Person!]!
}

type Mutation {
  createPerson(name: String!, age: Int!, skills: [String!]!): Person!
  updatePerson(id: ID!, name: String, age: Int, skills: [String!]): Person!
  deletePerson(id: ID!): Boolean!
}

在上面的例子中,我们定义了一个名为Person的类型,其中包含id,name,age和skills字段。我们还定义了一个名为Query的操作类型,其中包含person和people查询。最后,我们定义了一个名为Mutation的操作类型,其中包含createPerson,updatePerson和deletePerson变异。

操作

GraphQL模式中的操作定义了可用于与类型交互的查询,变异和订阅。查询是与API请求数据的一种方式,而变异是更改数据的一种方式。订阅允许API向客户端推送数据更改。

以下是GraphQL模式中的一些常见操作:

type Query {
  person(id: ID!): Person
  people: [Person!]!
}

type Mutation {
  createPerson(name: String!, age: Int!, skills: [String!]!): Person!
  updatePerson(id: ID!, name: String, age: Int, skills: [String!]): Person!
  deletePerson(id: ID!): Boolean!
}

type Subscription {
  personCreated: Person
  personUpdated(id: ID!): Person
  personDeleted(id: ID!): ID!
}

在上面的例子中,我们定义了一个名为person和people的查询类型,它们用于检索人员信息。我们还定义了一个名为createPerson,updatePerson和deletePerson的变异类型,用于创建,更新和删除人员信息。最后,我们定义了一个名为personCreated,personUpdated和personDeleted的订阅类型,它们用于接收人员信息的实时更改。

GraphQL模式优势

使用GraphQL模式的主要优势是:

  • 确定的数据:由于GraphQL模式提供了强类型系统,因此客户端可以确切地知道每个字段返回的类型,从而减少API中数据不一致的问题。

  • 减少请求数:由于GraphQL模式允许客户端指定请求的数据,并且服务器只会返回客户端请求的字段,因此可以减少请求数并提高查询效率。

  • 可以轻松添加功能:由于GraphQL模式提供了操作类型,因此添加新操作或修改现有操作非常容易。

总结

GraphQL模式是GraphQL API的关键组成部分,它定义了API中的类型和可用于与这些类型交互的操作。使用GraphQL模式可以减少请求数,提高查询效率,并提高开发人员的可维护性。