我正在尝试使用Javascript查询Graphql端点,并使用此javascript方法创建查询:
module.exports = (uid) =>
`{
rich_text_data_for_uid(uid:"${uid}")
{
record_uid
field_name
row_number
value
}
}`.replace(/\n/g, " ");
这是资源管理器中的有效查询:
{
rich_text_data_for_uid(uid:"31D2A75A3254D5EA852581D7006C2BA5")
{
record_uid
field_name
row_number
value
}
}
请注意,下面的JSON的格式设置为可读性强,但发送到服务器时(通过上面的replace方法调用)没有换行符。
这是作为我的fetch
请求的正文发送的,并且引起了问题(我怀疑是因为引用)
{ "query": "{
rich_text_data_for_uid(uid:"31D2A75A3254D5EA852581D7006C2BA5")
{
record_uid
field_name
row_number
value
}
}"
我也尝试过转义引号,并将其作为有效载荷发送:
{ "query": "{
rich_text_data_for_uid(uid:\"31D2A75A3254D5EA852581D7006C2BA5\")
{
record_uid
field_name
row_number
value
}
}"
我的Graphql响应始终为400:
POST正文发送了无效的JSON。
编辑:当我尝试使用变量时,也会出现错误:
{"query":
"{ rich_text_data_for_uid(uid:$uid) {record_uid field_name row_number value } }",
"variables":{"uid":"31D2A75A3254D5EA852581D7006C2BA5"}}
上面说
未定义变量“ $ uid”。
如何发送以将String参数传递给Graphql?
答案 0 :(得分:0)
代替删除问题,我将发布我得出的答案:
这是使其有效的方法-我们必须将查询字符串包装在描述我们要传递的变量的参数化块中:
module.exports = (uid) =>
`query rd($uid: String) {
rich_text_data_for_uid(uid:\$uid)
{
record_uid
field_name
row_number
pardef
value
}
}`.replace(/\n/g, " ");
与该JSON数据结合使用,效果很好:
const query = JSON.stringify({"query": richTextQueryForUid(uid), "variables": {"uid": uid}})