简单来说,为什么这是正确的:
query HeroNameAndFriends($episode: Episode)
{
hero(episode: $episode)
{
name
friends
{
name
}
}
}
这是不正确的(变量“$ episode”未定义。)?
{
hero(episode: $episode)
{
name
friends
{
name
}
}
}
这个规范背后的原因是什么?
答案 0 :(得分:2)
这是因为GraphQL是静态类型,因此graphql类型系统可以验证传入的正确变量。此外,变量的范围是每个操作。这意味着必须在该操作的顶层定义操作上下文中使用的任何变量。这就是你声明你计划提供的变量类型的原因。
为了执行这些和其他rules,必须声明您计划提供的变量类型。