查询和变更

你可以在本页学到有关如何查询 GraphQL 服务器的详细信息。

字段(Fields)

简单而言,GraphQL 是关于请求对象上的特定字段。我们以一个非常简单的查询以及其结果为例:

  1. # { "graphiql": true }
  2. {
  3. hero {
  4. name
  5. }
  6. }

你立即就能发现,查询和其结果拥有几乎一样的结构。这是 GraphQL 最重要的特性,因为这样一来,你就总是能得到你想要的数据,而服务器也准确地知道客户端请求的字段。

name 字段返回 String 类型,在这个示例中是《星球大战》主角的名字是:"R2-D2"

对了,还有一点 —— 上述查询是可交互的。也就是你可以按你喜欢来改变查询,然后看看新的结果。尝试给查询中的 hero 对象添加一个 appearsIn 字段,看看新的结果吧。

在前一例子中,我们请求了我们主角的名字,返回了一个字符串类型(String),但是字段也能指代对象类型(Object)。这个时候,你可以对这个对象的字段进行次级选择(sub-selection)。GraphQL 查询能够遍历相关对象及其字段,使得客户端可以一次请求查询大量相关数据,而不像传统 REST 架构中那样需要多次往返查询。

  1. # { "graphiql": true }
  2. {
  3. hero {
  4. name
  5. # 查询可以有备注!
  6. friends {
  7. name
  8. }
  9. }
  10. }

注意这个例子中,friends 返回了一个数组的项目,GraphQL 查询会同等看待单个项目或者一个列表的项目,然而我们可以通过 schema 所指示的内容来预测将会得到哪一种。