【发布时间】:2020-09-23 21:49:15
【问题描述】:
我需要通过rest发送json的请求,客户端(rest)的代码是Node,服务端的代码是golang。
身体如下图
const query = "{\"query\":\"query {n result: application(id: \"fb7b5992-4d0a-4782-acb7-13ae6cc66102\") {n idn namen providerNamen descriptionn integrationSystemIDn labelsn status {n conditionn timestamptn }}n}\"}"
当我运行代码时,我从服务器收到以下错误 (go) 我用
这是电话
const app = await fetch(`https://eway-auth-oauth.kh.de-arch.sho.ca.k8s-han.znd.com/dir/graphql`, {
method: 'post',
body: queryBody,
headers: {
'Accept-Encoding': 'gzip, deflate, br',
'Content-Type': 'application/json',
'Accept': 'application/json',
'Connection': 'keep-alive',
'DNT': '1',
'Origin': 'https://eway-auth.kh.devx-ar.znd.com',
'authorization': 'Bearer xxxxxxxxxxxxxxx',
'tenant': '3e6rezae-38b5-46a0-b1ed-9ccee153a0am'
}
});
return {
ky: await app.json(),
}
错误
json body could not be decoded: invalid character 'z' after object key:value pair
z 是application(id:z.... 中的起始后者
这是我需要发送的号码。
知道我该如何克服这个问题吗?我挣扎了两天
顺便说一句,
当我尝试使用 curl 命令时,它可以工作,当我将数据从终端复制到 js 变量 query 时出现错误,不确定方式:(
更新
这是 适合我的 curl(上面的代码不...)
curl `https://eway-auth-oauth.kh.de-arch.sho.ca.k8s-han.znd.com/dir/graphql` \
-H 'Accept-Encoding: gzip, deflate, br' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Connection: keep-alive' \
-H 'DNT: 1' \
-H 'Origin: https://eway-auth.kh.devx-ar.znd.com \
-H 'authorization: Bearer xxxxxxxxxxxxxxx' \
-H 'tenant: 3e6rezae-38b5-46a0-b1ed-9ccee153a0am' \
--data-binary '{\”query\":\"query {\n result: application(id: \"fb7b5992-4d0a-4782-acb7-13ae6cc66102\") {\n id\n name\n providerName\n description\n integrationSystemID\n labels\n status {\n condition\n timestampt\n \n}\n}\n}\"}'
\
--compressed
【问题讨论】:
-
queryBody 中应该包含的内容
-
那不是 json,而是 javascript 或一些字符串。这就是为什么它不起作用。
fetch方法的选项部分,即 json。 + 你能正确格式化你的身体吗?目前很难阅读。 -
你正在字符串化一个字符串?
-
如果您需要帮助,请发布 Go 代码。否则,删除 Go 标记。
-
试试这个:
const query = {"query":"query {\n result: application(id: \"fb7b5992-4d0a-4782-acb7-13ae6cc66102\") {\n id\n name\n providerName\n description\n integrationSystemID\n labels\n status {\n condition\n timestampt\n \n}\n}\n}"}这至少是正确的转义 json。还有queryBody = JSON.stringify(query)。
标签: javascript node.js json rest graphql