为什么在命名GraphQL查询时必须定义变量?

时间:2017-07-21 09:09:24

标签: syntax graphql

简单来说,为什么这是正确的:

query HeroNameAndFriends($episode: Episode)
{
  hero(episode: $episode)
   {
    name
    friends 
     {
      name
     }
   }
}

这是不正确的(变量“$ episode”未定义。)?

{
    hero(episode: $episode) 
      {
        name
        friends
        {
          name
        }
      }
}

这个规范背后的原因是什么?

1 个答案:

答案 0 :(得分:2)

这是因为GraphQL是静态类型,因此graphql类型系统可以验证传入的正确变量。此外,变量的范围是每个操作。这意味着必须在该操作的顶层定义操作上下文中使用的任何变量。这就是你声明你计划提供的变量类型的原因。

为了执行这些和其他rules,必须声明您计划提供的变量类型。