【问题标题】:Google Apps Script API Request with GraphQL parse error带有 GraphQL 解析错误的 Google Apps 脚本 API 请求
【发布时间】:2019-12-09 16:44:21
【问题描述】:

我正在尝试使用 Apps 脚本发出 API 请求。 API 基于 GraphQL。 我正在使用 JSON.stringify 函数。但API返回错误。

请求:

payload={"query":"{mutation {change_column_value (board_id: 177955, item_id: 287466289, column_id:\"phone\", value: \"{phone : 15065332974, countryShortName: \"US\" }\") {name column_values{ id value}}}"}}

我遇到了错误;

{"errors":[{"message":"Parse error on \" }\" (STRING) at [1, 148]","locations":[{"line":1,"column":148}]}]}

应用脚本代码:

   var us = "US"
   var column_values = '{ \
     mutation {change_column_value (board_id: 177955, item_id: '+ 287466289  +', column_id:"phone", value: "{phone : 15065332974, countryShortName: \"' + us  +'\" }") {name column_values{ id value}} \
   }';    

    settings = {
      "method": "POST",    
      "headers": {"Content-Type" : "application/json","Authorization" : "eyJhbGciOiJIXXXXXXXXXX"},  
      "payload" : JSON.stringify({query:column_values})
    }

    response= UrlFetchApp.fetch(url, settings);  

【问题讨论】:

  • 只是澄清一下,value 参数 supposed 是否是一个包含一些 JSON 值的字符串?

标签: json google-apps-script graphql graphql-java


【解决方案1】:

您不需要在 JSON 请求中转义特殊字符。

syntax 意味着使用通过冒号相互分配的键值对,其中字符串位于引号内(不使用反斜杠转义!),而数字和变量名则不是。

括号应用于您所需的 API 请求,如documented

【讨论】:

    【解决方案2】:

    GraphQL 操作中的括号表示一个选择集——一个或多个被请求的字段。操作本身(无论是query 还是mutation)都不是一个字段,所以不要将整个操作括在括号中。

    正确:

    mutation {
      doSomething
    }
    

    不正确:

    {
      mutation {
        doSomething
      }
    }
    

    只有在使用query shorthand 时,您会看到看起来像是在“外部”的括号。

    如果value 是一个字符串,那么您使用反斜杠来转义该字符串 内的双引号应该没问题。

    您也可以考虑使用variables,这将大大清理您的代码并使其不易出错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-22
      • 1970-01-01
      • 2019-05-08
      • 2014-03-24
      • 2019-05-24
      • 1970-01-01
      • 2020-02-26
      相关资源
      最近更新 更多