如何正确声明不带参数的 GraphQL 查询。

How to correctly declare a GraphQL query without parameters.

我正在使用 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 查询。

您在架构中指定的查询的行为与特定类型的任何其他字段一样(主要区别在于它们的类型链接到特定操作)。如果您不想为特定字段声明任何参数,则只需完全省略括号即可。查询和突变也是如此:

type Query {
  users: Int
}

来自规范:

Fields are conceptually functions which return values, and occasionally accept arguments which alter their behavior. These arguments often map directly to function arguments within a GraphQL server’s implementation.

因此值得指出的是任何类型的字段都可以有参数。例如,查询可能如下所示:

query UsersQuery {
  users {
    name
    posts (onlyNew: true) {
      title
    }
  }
}