⌘K

Icon Link什么是 GraphQL?

Icon LinkHTTP 和 API 解释

HTTP 是一种协议,或者说是一组访问网络资源的明确规则。资源可以是任何东西,从 HTML 文件到数据库中的数据、照片、文本等等。

这些资源通过应用程序编程接口(API)向我们提供,并且我们通过 HTTP 协议对这些 API 发出请求。这是一种允许开发人员请求资源的机制。

这里 Icon Link了解更多关于 HTTP 方法、客户端-服务器架构以及为什么你需要 API。

Icon LinkGraphQL 是如何工作的?

Icon InfoCircle

注意:本节介绍了 GraphQL 在幕后的工作原理,但作为在 Fuel 上构建的开发人员,了解这一点并非必要。模式定义、解析器逻辑等都由 Fuel Labs 的贡献者编写和维护。

GraphQL 是一种查询语言和规范,描述了如何与 API 进行通信。GraphQL 不受编程语言、后端框架和数据库的限制。GraphQL 在幕后使用 HTTP 协议,因此你可以将 GraphQL 操作映射回简单的 GETPOSTPUTDELETE 操作。你可以在这里查看 GraphQL 文档:https://graphql.org/。 Icon Link

GraphQL API 通过定义类型和这些类型上可用的属性(也称为模式),以及定义指定如何解析这些类型的函数来工作。解析器是一个负责为模式中的单个字段填充数据的函数。每当客户端查询特定字段时,该字段的解析器从适当的数据源中获取所请求的数据。

例如,作为 API 开发人员,你可以定义一个类型 Car,并定义可在该类型上查询的属性,如下所示:

type Car {
  id: ID
  color: String
  year: Int
  isNew: Boolean
}

Fuel Labs 为 Fuel 网络创建了一个 GraphQL API 端点,允许开发人员对区块链上的数据进行复杂查询。你可以利用这些查询来为前端应用程序填充用户可能感兴趣的细节,例如其交易历史、特定代币的余额等。

Icon LinkGraphQL 查询

GraphQL 中的查询允许你读取数据。GraphQL 允许你请求特定的数据,并精确返回你请求的内容。它还允许你在单个查询中请求多个资源,而不是像 REST API 那样为每个资源编写单独的“GET”请求。

GraphQL 还便于更复杂的查询和操作,例如分页、排序、过滤、全文搜索等。

示例查询:

query Actor {
  actor {
    name {
      appearIn
    }
  }
}

上面的查询将返回演员的姓名以及他们出现在的电影名称。

Icon LinkGraphQL 变更

GraphQL 中的变更是更新链状态的写操作。除了能够遍历对象及其字段外,GraphQL 还允许开发人员向字段传递参数以过滤响应。每个字段和嵌套对象都可以有自己的一组参数。

示例变更:

mutation CreateReviewForEpisode($ep: Episode!, $review: ReviewInput!) {
  createReview(episode: $ep, review: $review) {
    stars
    commentary
  }
}