操作参数和 GraphQL 变量有什么区别?
What's the difference between Operation Arguments and GraphQL variables?
我在学习 GraphQL 的过程中偶然发现了 操作参数 和 GraphQL 变量 之间的区别。因为 IMO,都提供,客户端,将动态数据传递给突变或查询等的设施
谁能教教我?
干杯!
参数和变量具有完全不同的功能。
GraphQL 架构中的每个 字段 都可以配置为接受一个或多个 参数 。例如:
query FilmQuery {
film (id: "ZmlsbXM6MQ==") {
id
title
}
}
此处 film
字段接受名为 id
的参数。 参数用于更改字段解析的值。在我们上面的示例中,服务器 returns 基于 id
的不同 Film
对象客户提供的价值。
参数接受输入,可以是标量、枚举或更复杂的输入对象类型。在这里,我们将 "ZmlsbXM6MQ=="
的字符串值传递给参数。通过写出查询中的值,据说我们正在使用 文字值 .
在查询中使用文字值没有错,但是当传递给参数的值需要是动态的时,我们需要更多的东西——我们需要变量。
变量允许我们参数化和重用查询。这是我们的示例,使用变量重写:
query FilmQuery($myId: ID!) {
film (id: $myId) {
id
title
}
}
必须首先在文档顶部定义变量,作为操作定义的一部分。这里我们定义了一个变量($myId
)并告诉 GraphQL 它的类型是 ID!
。一旦定义,变量就可以在操作中的任何地方使用。当客户端实际向服务器发出请求时,文档中使用的任何变量的实际值必须与查询本身一起发送。
同样,参数只提供了一种改变请求执行方式的方法,而使用变量作为这些参数的输入是使特定查询动态和可重用的原因。
请注意,您可以使用字符串连接或客户端模板文字来实现与变量类似的效果。但是,您通常应该避免这样做,因为 1) 它会给客户端带来不必要的额外工作,以及 2) 自己序列化输入,尤其是像输入对象类型这样的复杂输入,很快就会变得复杂且容易出错。
我在学习 GraphQL 的过程中偶然发现了 操作参数 和 GraphQL 变量 之间的区别。因为 IMO,都提供,客户端,将动态数据传递给突变或查询等的设施
谁能教教我?
干杯!
参数和变量具有完全不同的功能。
GraphQL 架构中的每个 字段 都可以配置为接受一个或多个 参数 。例如:
query FilmQuery {
film (id: "ZmlsbXM6MQ==") {
id
title
}
}
此处 film
字段接受名为 id
的参数。 参数用于更改字段解析的值。在我们上面的示例中,服务器 returns 基于 id
的不同 Film
对象客户提供的价值。
参数接受输入,可以是标量、枚举或更复杂的输入对象类型。在这里,我们将 "ZmlsbXM6MQ=="
的字符串值传递给参数。通过写出查询中的值,据说我们正在使用 文字值 .
在查询中使用文字值没有错,但是当传递给参数的值需要是动态的时,我们需要更多的东西——我们需要变量。
变量允许我们参数化和重用查询。这是我们的示例,使用变量重写:
query FilmQuery($myId: ID!) {
film (id: $myId) {
id
title
}
}
必须首先在文档顶部定义变量,作为操作定义的一部分。这里我们定义了一个变量($myId
)并告诉 GraphQL 它的类型是 ID!
。一旦定义,变量就可以在操作中的任何地方使用。当客户端实际向服务器发出请求时,文档中使用的任何变量的实际值必须与查询本身一起发送。
同样,参数只提供了一种改变请求执行方式的方法,而使用变量作为这些参数的输入是使特定查询动态和可重用的原因。
请注意,您可以使用字符串连接或客户端模板文字来实现与变量类似的效果。但是,您通常应该避免这样做,因为 1) 它会给客户端带来不必要的额外工作,以及 2) 自己序列化输入,尤其是像输入对象类型这样的复杂输入,很快就会变得复杂且容易出错。