【问题标题】:What is the requestString parameter when calling the graphql method in graphql.js?在graphql.js中调用graphql方法的requestString参数是什么?
【发布时间】:2019-09-05 13:22:12
【问题描述】:

我正在研究graphql.org 的“GraphQL.js 入门”。在本教程中,graphql 方法的调用方式如下:

graphql(schema, '{ hello }', root).then((response) => {
  console.log(response);
});

我的困惑在于第二个参数 - '{ hello }'。我真的不知道我在看什么。这是使用 Javascript 对象属性值简写,所以它真的意味着'{ hello: hello }'?如果是这样,该对象中的hello 值是否引用了“hello”解析器函数?而如果是这样的话,那么这个对象的key是干什么用的呢?

或者这在我不知道的 GraphQL 语法中有什么含义?

我完全转过来了。

【问题讨论】:

标签: graphql graphql-js


【解决方案1】:

GraphQL.js 的 official tutorial 显示使用模式定义语言 (SDL) 构建的模式。虽然 SDL 特定于 GraphQL,但它不是实际上是 GraphQL。 GraphQL 的实际“查询语言”部分有一个单独的、有据可查的语法——正是这种语法用于编写从客户端发送到 GraphQL 服务器的请求。另一方面,SDL 用于创建模式,该模式定义特定 GraphQL 服务的功能。

这两种语法确实有一些相似之处(例如,它们都使用大括号),但不能互换。

如果我们像这样使用 SDL 定义 GraphQL 架构:

type Query {
  hello: String
  goodbye: String
}

我们是说我们的查询根操作类型有两个客户可以请求的字段——hellogoodbye。作为客户端,我们可以使用 GraphQL 语法请求一个或两个字段:

query {
  hello
}

或者...

query {
  hello
  goodbye
}

标记之间的任何多余空格都会被忽略,因此第二个查询相当于:

query { hello goodbye }

此外,如果我们使用query 操作,而不是mutationsubscription,我们可以完全删除query 关键字,GraphQL 将假定它是一个查询。这被称为查询简写

{
  hello
  goodbye
}

official tutorial 很好地解释了如何制作 GraphQL 请求。您也可以查看the specification 以获得完整的解释和完整的示例。

【讨论】:

    猜你喜欢
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 2016-09-16
    • 2020-06-14
    • 2018-08-05
    • 2018-02-15
    • 2019-02-09
    相关资源
    最近更新 更多