如何正确声明不带参数的 GraphQL 查询。
Posted
技术标签:
【中文标题】如何正确声明不带参数的 GraphQL 查询。【英文标题】:How to correctly declare a GraphQL query without parameters. 【发布时间】:2019-03-17 02:56:12 【问题描述】:我正在使用 vs code + graphql-cli 来验证和检查模式。在以下声明中(在 graphql 模式文件中):
type Query
users(): Int
上面的 users
声明被标记为 en 错误,但服务器不会产生任何问题(或警告) - 它只是 vs 代码和 graphql lint
将其报告为错误:
2:9 Syntax Error: Expected Name, found ) undefined
如果我在查询中添加一个参数,例如:
type Query
users(n: Int): Int
那么vs code或者graphql-cli都没有报问题。 如何正确声明不带参数的 graphql 查询。
【问题讨论】:
尽管n
参数是可选的,但存在一个导致fail to parse users()
as a valid query 的GraphQL 错误。如果所有参数都丢失,你必须写users
。
【参考方案1】:
您在架构中指定的查询的行为与特定类型上的任何其他字段一样(主要区别在于它们的类型与特定操作相关联)。如果您不想为特定字段声明任何参数,则只需完全省略括号即可。查询和突变也是如此:
type Query
users: Int
来自规范:
从概念上讲,字段是返回值的函数,并且偶尔会接受改变其行为的参数。这些参数通常直接映射到 GraphQL 服务器实现中的函数参数。
所以值得指出的是,任何类型的字段都可以有参数。例如,查询可能如下所示:
query UsersQuery
users
name
posts (onlyNew: true)
title
【讨论】:
query with one optional parameter 怎么样?应该如何定义以使users(n: 100)
和users()
都有效?
参数默认可以为空。后者永远不会有效,因为它是无效的语法。如果不传入任何参数,则需要省略括号。以上是关于如何正确声明不带参数的 GraphQL 查询。的主要内容,如果未能解决你的问题,请参考以下文章