允许哪些类型的 GraphQL 变量?
Posted
技术标签:
【中文标题】允许哪些类型的 GraphQL 变量?【英文标题】:What types of GraphQL variable are allowed? 【发布时间】:2017-12-26 00:31:15 【问题描述】:GraphQL 的常见做法,尤其是在 HTTP 上,有一个 query
参数、一个可选的 operationName
和一个提供 variables
的可选 JSON 对象。
我见过的variables
参数的所有例子都是简单的JSON对象:
"var1": "value1",
"var2": 2
每个键都有一个简单的 JSON 类型值,例如数字或字符串。
GraphQL 变量值是否可以比这更广泛,更深入地混合数组和对象?
"var1": "value1",
"var2":
"name": "My Name",
"numbers": [1, 5, 11, 10]
【问题讨论】:
【参考方案1】:当然,但是,您会希望我确保您的架构中有匹配的输入类型。因此,要接受具有类似var2
中的结构的输入,您需要这样的东西:
input VarInput
name: String
numbers: [Int]
然后,对于查询/突变的类型定义...
type Query
foo (var1: String, var2: VarInput): Foo
然后您的解析器可以像任何其他参数一样获取var2
。
【讨论】:
感谢您的回答 - 我愿意接受它是正确的。不过,我想知道您是否有更多关于服务器如何将变量强制转换为 GraphQL 类型的信息? @BenCox 无论您使用什么 GraphQL 实现,都将再次根据您通过模式中的类型定义提供的信息,将输入解析为正确的类型。如果这是您所要求的,则服务器端不需要额外的步骤。以上是关于允许哪些类型的 GraphQL 变量?的主要内容,如果未能解决你的问题,请参考以下文章
GraphQL Connections for Relay 中的光标都有哪些限制?
我们如何从 GraphQL 的 RequestContextHolder 获取 GraphQL 的 HttpServletRequest(DefaultGlobalContext)(使用 graphq
带有官方 Graphql 教程的“无法在 CreateUser 类型上查询字段 'id'”