GraphQL

查询和变更

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

字段(Fields)

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

# { "graphiql": true }
{
  hero {
    name
  }
}

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

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

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

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

# { "graphiql": true }
{
  hero {
    name
    # 查询可以有备注!
    friends {
      name
    }
  }
}

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