Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';操作参数和GraphQL变量之间的区别是什么?_Graphql_Graphql Js - Fatal编程技术网

什么';操作参数和GraphQL变量之间的区别是什么?

什么';操作参数和GraphQL变量之间的区别是什么?,graphql,graphql-js,Graphql,Graphql Js,我正在学习GraphQL,无意中理解了操作参数和GraphQL变量之间的区别。因为IMO,都提供客户机,将动态数据传递给突变或查询等 有人能启发我吗 干杯 参数和变量具有完全不同的功能 GraphQL模式中的每个字段都可以配置为接受一个或多个参数。例如: query FilmQuery { film (id: "ZmlsbXM6MQ==") { id title } } 这里的film字段接受名为id的参数参数用于更改字段解析为的值。在上面的示例中,服务器根据客户端提供

我正在学习GraphQL,无意中理解了操作参数GraphQL变量之间的区别。因为IMO,都提供客户机,将动态数据传递给突变或查询等

有人能启发我吗


干杯

参数和变量具有完全不同的功能

GraphQL模式中的每个字段都可以配置为接受一个或多个参数。例如:

query FilmQuery {
  film (id: "ZmlsbXM6MQ==") {
    id
    title
  }
}
这里的
film
字段接受名为
id
的参数参数用于更改字段解析为的值。在上面的示例中,服务器根据客户端提供的
id
值返回不同的
Film
对象

参数接受输入,输入可以是标量、枚举或更复杂的输入对象类型。这里,我们将向参数传递字符串值
“ZmlsbXM6MQ==”
。通过在查询中写出值,可以说我们使用了一个文本值

在查询中使用文本值没有什么错,但是当传递给参数的值需要是动态的时,我们需要更多的东西——我们需要变量

变量允许我们参数化和重用查询。下面是我们的示例,使用变量重写:

query FilmQuery($myId: ID!) {
  film (id: $myId) {
    id
    title
  }
}
变量必须首先在文档顶部定义,作为操作定义的一部分。这里我们定义了一个变量(
$myId
),并告诉GraphQL它的类型是
ID。一旦定义,变量就可以在操作中的任何地方使用。当客户端实际向服务器发出请求时,文档中使用的任何变量的实际值都必须与查询本身一起发送

同样,参数只提供了一种更改请求执行方式的方法,而使用变量作为这些参数的输入是使特定查询具有动态性和可重用性的原因。


请注意,您可以在客户端使用字符串连接或模板文本来实现与变量类似的效果。但是,您通常应该避免这样做,因为1)这会给客户端带来不必要的额外工作,2)自己序列化输入,特别是像输入对象类型这样复杂的输入,可能会很快变得复杂和容易出错。

这正是我要找的答案。非常感谢你!!!干杯