带有 GraphQL 解析错误的 Google Apps 脚本 API 请求
Posted
技术标签:
【中文标题】带有 GraphQL 解析错误的 Google Apps 脚本 API 请求【英文标题】:Google Apps Script API Request with GraphQL parse error 【发布时间】: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 值的字符串?
【参考方案1】:
您不需要在 JSON 请求中转义特殊字符。
syntax 意味着使用通过冒号相互分配的键值对,其中字符串位于引号内(不使用反斜杠转义!),而数字和变量名则不是。
括号应用于您所需的 API 请求,如documented。
【讨论】:
【参考方案2】:GraphQL 操作中的括号表示一个选择集——一个或多个被请求的字段。操作本身(无论是query
还是mutation
)都不是一个字段,所以不要将整个操作括在括号中。
正确:
mutation
doSomething
不正确:
mutation
doSomething
只有在使用query shorthand 时,您会看到看起来像是在“外部”的括号。
如果value
是一个字符串,那么您使用反斜杠来转义该字符串内 内的双引号应该没问题。
您也可以考虑使用variables,这将大大清理您的代码并使其不易出错。
【讨论】:
以上是关于带有 GraphQL 解析错误的 Google Apps 脚本 API 请求的主要内容,如果未能解决你的问题,请参考以下文章
GraphQL - 语法错误:预期“:”,找到“)”[关闭]
带有 Spring 的 GraphQL-java - 解析器 vd datafetcher
如何使用带有 ktor 框架的 graphql-kotlin 进行字段级解析器